虽然我的问题似乎重复,但我是对思考的新手,可以找到确切问题的解决方案。 我需要编写一个方法,任何类都可以调用它来填充其数据。为简单起见,我创建了一个名为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'相同的类型,以便我可以调用它的实例方法。 有人可以帮忙吗?
答案 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(..);