Я работал над корпусом переключателя.
Если мы используем 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";
Кто-нибудь может объяснить это, почему не взять первые два случая и не взять последний? Заранее спасибо.