从具有类名的字符串动态调用类变量

时间:2019-06-10 02:40:44

标签: java

我正在使用几个类来存储数据。这些类中的每一个都具有在各个类中具有相同名称的静态变量。我想通过使用字符串输入类的名称并从该特定类返回数据来加载这些变量。

我以前是通过反射加载类的实例来完成此操作的,但是我想这样做而实际上不必创建类的实例。

public class dataSet {
static int dataPoint=1;
}
public class otherDataSet {
static int dataPoint=2;
} 
public int returnDataPoint (string className) {
//returns className.dataPoint
}

1 个答案:

答案 0 :(得分:1)

如果坚持使用反射,则不必创建类的实例即可访问其静态成员。只需使用null而不是对象即可。

public class dataSet {
static int dataPoint=1;
}
public class otherDataSet {
static int dataPoint=2;
} 

// You can try-catch inside of the method or put a throws declaration on it. Your choice.
public int returnDataPoint (string className) throws Exception {
    Class<?> clazz = Class.forName(className); // edit to include package if needed
    Field field = clazz.getField("dataPoint");
    return field.getInt(null); // calling with null
}