【问题标题】:Is it possible to get static property by class name?是否可以通过类名获取静态属性?
【发布时间】:2013-06-09 08:30:40
【问题描述】:

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

我当然可以这样做:

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

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

【问题讨论】:

  • 仅当 prop 为静态时
  • @blackbelt,是的,道具是静态的。
  • 那是什么问题?
  • 你只能使用反射来做到这一点,这可以说比你正在做的更糟糕。如果您提供有关您的问题的更多信息,则可能有另一种方法可以避免您正在做的事情。

标签: java android class reflection static


【解决方案1】:

您可以这样做,但正如 cmets 中所述,它甚至不如您当前的解决方案整洁。

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

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

【讨论】:

    【解决方案2】:

    使用反射:

    Class.forName("mypackage.MyClass").getDeclaredField("field").get(null);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多