Java反射:使用python等树形图中的params创建实例

时间:2012-04-11 07:56:14

标签: java python reflection

我是一个python开发人员,现在我想使用树形图中的params创建一个Java实例,就像创建一个从dict中复制的python实例...我尝试通过java反射来实现它。但我找不到解决方案。

任何人都可以帮我一臂之力? THX

2 个答案:

答案 0 :(得分:1)

不确定我是否关注,但根据我的理解 - 您正在尝试动态创建对象的属性。

嗯,这不能在java中完成,部分原因是语言是statically typed [与python不同]。

在java中,必须在编译时创建对象的所有字段。反射可以帮助您操纵对象,但不能完全改变它们的结构。

解决方法可能是使用Map<String,Object>,并在那里保留适当的内容。你不需要反思使用这个解决方案[这是一件好事,因为反射既不安全又倾向于程序的slow-down overall performance

答案 1 :(得分:0)

这就是你要找的东西! 创建一个地图以保留您的课程。

private static Map<String, Class<? extends MySuperClass>> classesMap = new HashMap<String, Class<? extends MySuperClass>>();

将类对象放在地图

static {
      classesMap.put("PERSON_CLASS", Person.class); 
      classesMap.put("ADDRESS_CLASS", Address.class);
}

然后是一个getInstance方法,它返回给定类的实例。

private static MySuperClass getInstance(String classNameConstant) throws Exception{
     Class<? extends MySuperClass> myClass = classesMap.get(classNameConstant);
     if(myClass!=null){
        return myClass.newInstance();
     }
     return null;
}

希望这会有所帮助。注意:我不懂python。