java - 如何在Java中组合enum、switch和instanceof

标签 java enums switch-statement

我想使用 switch 语句(而不是 else if)测试三种情况。现在,这些情况都测试变量是否是类的实例。我想做这样的事情:

switch(var){

case A: doA();
case B: doB();
case C: doC();

} 

public enum{
A, B, C
}

我希望 A 代表 var instanceof A 的情况。有没有办法将此信息分配给枚举中的值?

最佳答案

声明枚举如下:

private enum ClassType {
    A,
    B,
    C,
    D,
    Unknown;
}

现在,编写一个返回类型的方法:

private ClassType getClassType(Object object){
    ClassType type = null;
    try{
        type = ClassType.valueOf(object.getClass().getSimpleName());
    }catch(IllegalArgumentException e){
        type = ClassType.Unknown;
    }
    return type;
}

现在,将其与 switch 一起使用:

switch(getClassType(object)){
    case ClassType.A:
        //do something
        break;
}

对于新类,您需要在 switch 中添加值和大小写。

关于java - 如何在Java中组合enum、switch和instanceof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41881091/

相关文章:

java - 使用 Eclipse 测试 Maven 依赖关系

node.js - Sequelize : Change column type to ENUM

c# - 测试按位枚举值

java - Case 表达式必须是常量表达式

c - 没有标签的 switch 语句代码

java - 如何通过属性在 ArrayList 中查找对象

java - Android应用程序: RecyclerView hangs when I put around 300 records from API in it at one go

c++ - 在 case 语句标签中使用函数调用

java - 什么是 ias-web.xml 部署描述 rune 件?

java - 打印枚举期间二元运算符 '+' 的操作数类型错误