1

例如,我需要从我自己的类 Class1 或 Class2 中获取静态属性(两个类的属性名称相同)取决于用户操作。我在 String 变量中只有类名。如何获得这个属性?

我当然可以这样做:

InfoClass ic;
if(className.equals("Class1")) {
    ic=Class1.prop;
} else if(className.equals("Class2")) {
    ic=Class2.prop;
}

但这不是很好的解决方案,我认为......还有其他方法可以实现吗?

4

2 回答 2

3

您可以这样做,但正如评论中提到的,它甚至比您当前的解决方案更简洁。

Class clazz = Class.forName(qualifiedClassName);
Field field = clazz.getDeclaredField("prop");
ic = (InfoClass)field.get(null);

很可能有一种不同的方式来执行您在应用程序中所做的任何事情,这不需要反射或一长串条件;但我对你的问题知之甚少,不知道那是什么。

于 2013-06-09T08:40:44.997 回答
2

使用反射:

Class.forName("mypackage.MyClass").getDeclaredField("field").get(null);
于 2013-06-09T08:40:28.317 回答