![](/img/trans.png)
[英]Java - Create new Instance using Reflection without knowing constructor params
[英]Java reflection: create a instance using params from a treemap like python
我是 python 开发人员,现在我想使用树形图中的参数创建一个 Java 实例,就像创建一个 python 实例,该实例的参数来自字典...我尝试通过 java 反射来实现。 但我找不到解决办法。
谁能帮帮我? 谢谢
不确定我是否在关注,但据我了解 - 您正在尝试动态创建 object 的属性。
好吧,这不能在 java 中完成,部分原因是该语言是静态类型的[与 python 不同]。
在java中,编译时必须创建object的所有字段。 反射可以帮助你操纵对象,但不能完全改变它们的结构。
一种解决方法是使用Map<String,Object>
并在那里保存属性。 使用此解决方案不需要反射 [这是一件好事,因为反射既不安全又会降低程序的整体性能]。
这是你想要的。 创建一个 map 来保留您的课程。
private static Map<String, Class<? extends MySuperClass>> classesMap = new HashMap<String, Class<? extends MySuperClass>>();
将 class 个对象放入 map
static {
classesMap.put("PERSON_CLASS", Person.class);
classesMap.put("ADDRESS_CLASS", Address.class);
}
然后是返回给定 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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.