Java中如何在变量中存储类名
例如,我有三门课:Java中如何在变量中存储类名,java,Java,例如,我有三门课: public class A{public static void doSth(){}} public class B{public static void doSth(){}} public class C{public static void doSth(){}} 然后我有一个变量: private int controlVariable; 然后根据这个控制变量的值,我想在上面的不同类中调用doSth()方法。例如: switch (i) { case 1: A.do
public class A{public static void doSth(){}}
public class B{public static void doSth(){}}
public class C{public static void doSth(){}}
然后我有一个变量:
private int controlVariable;
然后根据这个控制变量的值,我想在上面的不同类中调用doSth()方法。例如:
switch (i)
{
case 1:
A.doSth();
break;
case 2:
B.doSth();
break;
case 3:
C.doSth();
break;
}
然而,使用上述方法非常繁琐。我可以使用变量来存储类的名称吗。例如:
classNameVariable = A;
classNameVaribale.doSth();
有人能帮我吗?请不要使用继承。我相信使用
A.getClass().getSimpleName()
将返回一个带有源代码中给定类名的字符串。您可以使用反射从类名获取类:
Class cls = Class.forName("your class package");
Method method = cls.getMethod("methodName", arguments);
Object o = method.invoke(null, "whatever");
希望这对您有所帮助。在Java 8中,您可以使用方法引用:
public class A {
public static void doSth() {
System.out.println("A");
}
}
public class B {
public static void doSth() {
System.out.println("B");
}
}
public class C {
public static void doSth() {
System.out.println("C");
}
}
public class Sample {
public static void main(String[] args) {
Runnable[] methods = { A::doSth, B::doSth, C::doSth };
int controlVariable = 2;
methods[controlVariable].run(); // C
}
}
在本例中,
controlVariable
是一个基于0
的索引。没有静态方法的接口。在我看来,你的问题就像是一个问题,当最佳解决方案是使用完全不同的方法时,你会问如何解决特定的代码问题。最好是告诉我们您正在尝试解决的总体问题,而不是您当前如何解决它。这将是非常痛苦的,除非您解释为什么方法需要是静态的。为什么继承不是一个选项?@fateddy,因为我不想创建对象。这就是为什么我将该方法定义为静态方法。谢谢!这对我帮助很大。谢谢你的帮助。谢谢你的回复。