例如,我需要从我自己的类Class1或Class2中获取静态属性(两个类的属性名称相同)依赖于用户操作。我在String变量中只有类名。如何获得这个属性?
当然,我可以这样做:
InfoClass ic;
if(className.equals("Class1")) {
ic=Class1.prop;
} else if(className.equals("Class2")) {
ic=Class2.prop;
}
但这不是那么好的解决方案,我认为......还有其他方法可以实现吗?
答案 0 :(得分:1)
使用反射:
Class.forName("mypackage.MyClass").getDeclaredField("field").get(null);
答案 1 :(得分:1)
你可以这样做,但正如评论中所提到的,它甚至不如你当前的解决方案那么整洁。
Class clazz = Class.forName(qualifiedClassName);
Field field = clazz.getDeclaredField("prop");
ic = (InfoClass)field.get(null);
很可能有一种不同的方式来做你在你的应用程序中做的任何事情,这不需要反思或一长串的条件;但我对你的问题知之甚少,不知道那是什么。