Есть такой код:
public class Solution {
public static enum E1 {A, B, C, Y}
public static void main(String[] args) {
Solution.switchTest(E1.C);
/* output
it's E1.C
*/
}
public static void switchTest(Enum obj) {
switch (obj.getClass().getSimpleName()) {
case "E1":
System.out.println("it's " + obj.getClass().getSimpleName() + "." + obj);
break;
default:
System.out.println("undefined");
}
}
Результатом его выполнения будет, как вы могли догадаться, "it's E1.C".
Так вот, когда мы доходим в дебагере до "switch (obj.getClass().getSimpleName())", то в результате получаем "C".
Так каким боком мы проходим case, и мало того, получаем в консоль "E1.C" ?!
Update 1:
Как вам написали уже в комментарии, это выводится результат toString
для obj
.
В отладочном режиме есть крутая фича - Evaluate Expression, указал на картинке куда тыкать. Выделяете нужное вам выражение, затем нажимаете туда, оно у вас появляется в открывшемся окошке, нажимаете Evaluate - получаете результат его вычисления в текущем месте программы, в котором вы остановились. Так же там можно писать свои выражения, используя все видимые в текущем месте компоненты программы.
То что вы описали, очень странно. Так как енум в java
это обычный класс, а A,B,C,Y
- это объекты данного класса. Соответственно, класса с именем С
у вас нет и быть не может.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
По заданию нужно было сделать код как на картинке, но я, собрал вот такой, и хотел бы узнать, одинаковы ли они по функциональности и в чём плюсы...