我已經編寫代碼來將對象轉換爲所需的類型。如果所需的類型是一個自定義類對象,並且它有另一個對象,我們需要遞歸地進行轉換。順便說一句:我會知道,如果輸入是一個哈希映射,我需要構造一個對象。如果在HashMap中,如果另一個HashMap存在,那麼我需要理解它在對象內部的對象。而內部對象我需要從內部hashMap構建。爲了構建它,我將遞歸地調用該方法。我在這裏描述的代碼。但是這兩個類Castor和MyBuilder都成了循環。我沒有得到如何打破它。如果方法不循環,我們可以打破依賴關係。但隨着週期可以幫助嗎? 我可以引入任何模式,或者我可以如何重構這個模式?如何在方法遞歸時重構以避免循環依賴?
在此先感謝。
代碼是這樣的: 對於循環更快地訪問PL是指:的returnValue castPrimitive(....和無效setParameterToEntity .....
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
我沒有說他的回答是正確的。我表示感謝您的幫助。謝謝你的評論SJuan :)如果你堅持,我會這麼做:) –