【发布时间】:2015-07-27 22:00:23
【问题描述】:
在我看来,这样的 switch 语句会很有意义,但它会产生编译错误:
public void m(Class c) {
switch (c) {
case SubClassOfC1.class : //do stuff; break;
case SubClassOfC2.class : //do stuff; break;
}
}
但是,不支持打开类。是什么原因?
我不是在尝试解决 instanceof,它实际上是在类级别上,我需要执行一些操作,那里没有实例。
编译错误在 SubClassOfC1 & SubClassOfC2 附近:constant expression required.
【问题讨论】:
-
谢谢@Jashaszun,我对 Github MD 感到困惑。
-
这是不允许的,但是您更简单的解决方法是使用
c.getName(),以防万一,使用类名 -
不是完全重复,但请参阅stackoverflow.com/questions/338206/…
-
一个问题是类不是编译时常量。您也不能使用非常量字符串。在动态值上进行分支需要不同的机制。
-
但是...但是...多态性。
标签: java class switch-statement java-8 java-7