有什么办法可以为类的名称创建一个引用变量吗?
例如,假设我们有这两个类
class ClassA {
public static String s = "This is class A";
}
class ClassB {
public static String s = "This is class B";
}
然后我们想像这样使用它们
// first somehow give the name of ClassA to some variable MyRef
// then print "This is class A"
System.out.print(MyRef.s);
// then give the name of ClassB to the same variable MyRef
// and then print "This is class B"
System.out.print(MyRef.s);
有什么办法可以做到这一点吗? 如果没有,是否有其他简单的方法可以完成同样的事情,即轻松地在 ClassA 的静态变量和 ClassB 的静态变量之间切换?
最佳答案
最接近的方法是将 ClassA.class
或 ClassB.class
作为 Class
传递,然后使用反射来获取该类的字段及其值。
// TODO: Much better exception handling :) (It's almost never appropriate to
// throw Exception...)
public static String getS(Class<?> clazz) throws Exception {
Field field = clazz.getField("s");
return (String) field.get(null);
}
调用它:
String a = getS(ClassA.class);
String b = getS(ClassB.class);
一般来说,更好的解决方案是使用继承,但这需要某个父类(super class)或接口(interface)的实例,然后是方法而不是字段。当然,这可能不符合您的其他要求 - 我们对您想要做的事情的整体情况不太了解。
关于java - Java 中的类引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27719204/