2

我是一个 python 开发人员,现在我想使用树形图中的参数创建一个 Java 实例,就像创建一个 python 实例,该实例来自一个字典......我尝试通过 java 反射来做到这一点。但我找不到解决方案。

有人可以帮帮我吗?谢谢

4

2 回答 2

1

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

好吧,这不能在 java 中完成,部分原因是该语言是静态类型的[不像 python]。

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

一种解决方法可能是使用Map<String,Object>, 并将属性保存在那里。使用此解决方案不需要反射(这是一件好事,因为反射既不安全,又会降低程序的整体性能)。

于 2012-04-11T07:59:45.037 回答
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。

于 2012-04-11T08:13:06.213 回答