私はオブジェクトを必要な型にキャストするコードを書いています。また、必要な型がカスタムクラスオブジェクトで、別のオブジェクトがある場合は、再帰的にキャストする必要があります。ところで、入力がハッシュマップの場合は、オブジェクトを作成する必要があることがわかります。別のhashMapがある場合は、そのオブジェクトがオブジェクト内にあることを理解する必要があります。内側のオブジェクトから内部のhashMapを構築する必要があります。それを構築するには、メソッドを再帰的に呼び出します。コード私はここに描いている。しかし、これらの2つのクラスのCastorとMyBuilderはどちらもサイクルに入っています。私はそれを壊す方法を取得していません。メソッドが循環していない場合、依存関係を壊すことができます。しかし、サイクルで誰も助けることができますか? どのようなパターンを紹介することができますか、またはこれをどのようにリファクタリングすることができますか?メソッドが再帰的であるときに循環依存を避けるためにどのようにリファクタリングするのですか?
ありがとうございます。 .....
MyBuilder myBuilder = new MyBuilder();
class Castor {
public Object castToRequiredType(Type type, Object object) {
String typeString = type.toString();
Object returnValue = null;
if (myUtils.isTypePrimitive(typeString)) {
returnValue = castPrimitive(object.toString(), typeString);
}else if {
// some conditions and some casting logic.
}
else {
returnValue = myBuilder.buildCustomObject(this,typeString, object);
}
return returnValue;
}
// other methods which call castToRequiredType() recursively.
}
class MyBuilder{
buildCustomObject(Castor castor,
String classOfType, Object object){
Class<?> loadedClass = myUtils.loadClass(classOfType);
instance = loadedClass.newInstance();
HashMap<?, ?> myMap;
List<Method> declaredMethods = myUtils.getMethodsForClass(loadedClass);
for (Method method : declaredMethods) {
if (object instanceof HashMap<?, ?>) {
myMap = (HashMap<?, ?>) object;
// ITERATE THROUGH MAP AND CALL THE SET PARAMETER TO ENTITY METHOD.
}
}
}
return instance;
}
void setParameterToEntity(Castor caster,
Object instance, Method method, Object value) {
ype[] parameterTypes = method.getGenericParameterTypes();
Object castedValue = caster.castToRequiredType(
parameterTypes[0], value);
}
}}
memetechの回答が正しい場合は、自分の代わりに正しいとマークする必要があります。 – SJuan76
私は彼の答えが正しいとは言わなかった。私は助けてくれてありがとう。あなたは私がそれを行うと主張する場合::) –