我是一个python开发人员,现在我想使用树形图中的params创建一个Java实例,就像创建一个从dict中复制的python实例...我尝试通过java反射来实现它。但我找不到解决方案。
任何人都可以帮我一臂之力? THX
答案 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。