2014-11-22 21 views
0

雖然我的問題似乎重複,但我是Reflections的新手,可以找到確切問題的解決方案。 我需要編寫一個方法,任何類都可以調用它來填充其數據。爲了簡單起見,我創建了一個名爲MappingHelper的類,其中有一個類似於Factory的方法'Create',它將創建它自己的實例。然後我需要填充這個實例並返回它。動態創建和填充java中的類內部方法

public final Class MappingHelper{ 
public final Object getBENodeData(Class<?> classRef, String className){ 
    Class myClass = Class.forName(classRef.getName()); 
    Method method = classRef.getMethod("Create",(Class<?>[])null); 
    Object obj = method.invoke(null, (Object[]) null); 
} 
} 

我需要將類型轉換爲與'classRef'類型相同的類型,以便我可以調用它的實例方法。 有人可以幫忙嗎?

回答

0

你想要做的事情是不可能的反射和你當前的設置。即使您設法將對象投射到classRef,您也不知道要調用什麼實例方法,因爲getBENodeData可能可以採用任何類型。

你可以做的是從類型已知的位置調用該方法,並對其進行強制轉換。

Object obj = getBENodeData(MyType1.class, MyType1.class.getName()); 
MyType1 myType1 = (MyType1) obj; 
myType1.setId(..); 

Object obj2 = getBENodeData(MyType2.class, MyType2.class.getName()); 
MyType2 myType2 = (MyType2) obj2; 
myType2.setName(..);