如何从另一个Java类访问动态变量?

时间:2018-03-27 12:48:08

标签: java android xml

我的问题与其他人类似,但对我来说有点棘手 我有一个具有静态定义变量的Class DummyData

  1. public static String Survey_1 ="";
  2. public static String Survey_2 ="";
  3. public static String Survey_3 ="";
  4. 所以,我称之为DummyData.Survey_1,它返回整个字符串值。与DummyData.Survey_2和DummyData.Survey_3类似 但问题是,当我称它们为动态时,它不会返回它们的价值。 我有一个可变数据,其值会动态变化,如(data = Survey_1或data = Survey_2或data = Survey_3) 我使用#Reflection获取其值但未能获得其值 我使用的方法我在下面帮助我解决这个问题。

    Field field = DummyData.class.getDeclaredField(data); String JsonData = field.toString();

    DummyData.class.getDeclaredField("Survey_1").toString()

    但是这返回包名,类名和字符串名但不返回字符串值。 我正在做什么可以帮助我?

2 个答案:

答案 0 :(得分:0)

获取声明字段的值并不像那样简单。

您必须先找到该字段。然后,您必须从类的实例中获取该字段。

Field f = Dummy.class.getDeclaredField(“field”);
Object o = f.get(instanceOfDummy);
String s = (String) o;

答案 1 :(得分:0)

执行toString()的简单Field实际上会调用toString()对象的Field方法,但不会访问该值

你必须这样做:

Field field = SomeClass.class.getDeclaredField("someFieldName");
String someString = (String) field.get(null); // Since the field is static you don't need any instance

另外,请注意使用反射是expensivedangerous操作。您应该考虑重新设计系统