【发布时间】:2015-11-11 08:11:34
【问题描述】:
我正在研究开关盒。
如果我们使用 class.getName(),那么,我会收到“case 表达式必须是常量表达式”的错误,如下所示:
switch(param.getClass().getName())
{
case String.class.getName():
// to do
break;
}
即使我们执行以下操作,将字符串类名放入常量中,也会出现同样的错误:
public static final String PARAM_NAME = String.class.getName();
switch(param.getClass().getName())
{
case PARAM_NAME:
// to do
break;
}
但是,如果我执行以下操作,使用字符串文字“java.lang.String”,则不会出现错误:
public static final String PARAM_NAME = "java.lang.String";
谁能解释一下,为什么不接受前两个案例并接受最后一个案例?提前致谢。
【问题讨论】:
标签: java switch-statement java-8 constants string-literals