java - Java中如何将类名存储在变量中

标签 java

例如,我有三个类(class):

public class A{public static void doSth(){}}
public class B{public static void doSth(){}}
public class C{public static void doSth(){}}

然后我有一个变量:

private int controlVariable;

然后根据这个controlVariable的值,我想调用上面不同类中的doSth()方法。例如:

switch (i)
{
case 1:
A.doSth();
break;
case 2:
B.doSth();
break;
case 3:
C.doSth();
break;
}

但是,使用上述方法非常繁琐。我可以使用变量来存储类的名称吗?例如:

classNameVariable = A; 
classNameVaribale.doSth();

有人可以帮我解决这个问题吗?请不要使用继承。

最佳答案

在 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 的索引。

关于java - Java中如何将类名存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29045090/

相关文章:

java - android.widget.FrameLayout$LayoutParams 无法转换为 android.widget.AbsListView$LayoutParams

java - 将多对多关联移动到 @Embedded 对象

java - 洛瓦吉 iText : Align paragraph vertically within Cell object

java - Jackson中JSON结构对应的POJO可以为null吗?

java - 如何使用 equals 方法将对象添加到数组列表中以排除相似的对象?

java - RESTEasy 中无法识别 JAX-RS 应用程序路径

java - Spring Boot UnsatisfiedDependencyException 创建名称为不可解析循环引用的 bean 时出错

java - 如果我自动将 'http://' 连接到前面,Web 连接不起作用

java - Spring MVC 在端点上使用相同的路径来返回不同的内容?

java - Jackrabbit 是否允许删除文件?