Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用类';从字符串动态调用类变量;姓名_Java - Fatal编程技术网

Java 使用类';从字符串动态调用类变量;姓名

Java 使用类';从字符串动态调用类变量;姓名,java,Java,我正在使用几个类来存储数据。这些类中的每个类都有跨类使用相同名称的静态变量。我想通过输入带有字符串的类名并返回特定类的数据来加载这些变量 我以前是通过反射加载类的实例来实现这一点的,但我希望这样做而不必实际创建类的实例 public class dataSet { static int dataPoint=1; } public class otherDataSet { static int dataPoint=2; } public int returnDataPoint (string c

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

我以前是通过反射加载类的实例来实现这一点的,但我希望这样做而不必实际创建类的实例

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

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

公共类数据集{
静态int数据点=1;
}
公共类otherDataSet{
静态int数据点=2;
} 
//您可以在方法内部尝试catch或在其上放置throws声明。你的选择。
public int returnDataPoint(字符串类名称)引发异常{
Class clazz=Class.forName(className);//如果需要,编辑以包含包
Field=clazz.getField(“数据点”);
return field.getInt(null);//使用null调用
}

如果您发布了可用于实例的代码,则可以很容易地将其修改为可用于静态。但是为什么在Java中做一些不正确的事情,并且比正确的方法慢几个数量级呢?您根本不应该使用反射——只需要拥有一个包含数据点的类数据集,并创建它的多个实例。