我有一個具有包含其他類的結構的類,每個類也可以包含不同的類。所以這是類的樹結構。如何獲得在類中確定的對象的實例
public class FirstLevelClass {
public SecondLevelClass1 secondLevelClass1;
public SecondLevelClass2 secondLevelClass2;
...
}
public class SecondLevelClass1 {
public ThirdLevelClass thirdLevelClass;
public String fieldSecondLevelClass;
...
}
我初始化了FirstLevelClass的變量。
FirstLevelClass firstLevelClass;
我需要獲取存儲在firstLevelClass中的secondLevelClass1的實例。我該怎麼做,有SecondLevelClass1類的名字?
基本上我需要得到SecondLevelClass1中字段的值。因爲,我稱之爲fieldSecondLevelClass.get(...)與心不是實例初始化
String fieldName = "fieldSecondLevelClass";
Field[] fields = firstLevelClass.getClass().getDeclaredFields();
Object foundValue = null;
for (Field field : fields) {
Field foundField = null;
foundField = field.getType().getDeclaredField(fieldName);
foundValue = fieldSecondLevelClass.get((Class.forName(foundField.getDeclaringClass().getName())).newInstance());
}
:可是寫這個的時候我失敗了。但如果我寫
foundValue = foundField.get(((FirstLevelClass) firstLevelClass).secondLevelClass1);
它會正常工作。 因此,你做任何想法如何使用它的名稱和FirstLevelClass的實例將secondLevelClass1的實例傳遞給fieldSecondLevelClass.get(...)?
叫我瘋了,但...你爲什麼要通過反思來做到這一點,而不是爲你感興趣的領域提供一個吸氣劑? – JonK
如果該字段沒有被初始化,那麼*就是*沒有「正確的實例」。 –
2JonK是我可以,但這對我來說是一個挑戰,要解決這個問題 – Alex