在java中动态创建和填充方法内部的类

时间:2014-11-22 21:33:29

标签: java reflection

虽然我的问题似乎重复,但我是对思考的新手,可以找到确切问题的解决方案。 我需要编写一个方法,任何类都可以调用它来填充其数据。为简单起见,我创建了一个名为MappingHelper的类,其中一个类似于Factory的方法'Create'将创建自己的实例。然后我需要填充此实例并将其返回。

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);
 }
}

我需要将obj类型转换为'classRef'相同的类型,以便我可以调用它的实例方法。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分: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(..);