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,因为我不想创建对象。这就是为什么我将该方法定义为静态方法。谢谢!这对我帮助很大。谢谢你的帮助。谢谢你的回复。