【发布时间】:2016-04-09 08:36:13
【问题描述】:
我想使用 java switch 语句,它使用 class 名称作为 case 常量。有可能吗?还是我必须重复类名?
由于编译器错误,以下代码无法运行:
case 表达式必须是常量表达式
String tableName = "MyClass1";
...
switch (tableName) {
case MyClass1.class.getSimpleName():
return 1;
case MyClass2.class.getSimpleName():
return 2;
default:
return Integer.MAX_VALUE;
}
这是该问题的在线演示 (openjdk 1.8.0_45):http://goo.gl/KvsR6u
【问题讨论】:
-
您可以尝试将字符串分配给最终的 String 局部变量吗?
-
哪个java版本?在 Java 7/8 上你会得到不同的结果。
-
@Marged 我正在使用 Java 8,但对任一版本的解决方案都感兴趣...
-
对编译时常量表达式的很好解释:stackoverflow.com/a/3827424/1857897
标签: java switch-statement constants final class-names