Виртуальная песочница (тм)

Wednesday, January 6, 2016

Что будет, если в switch по enum попадет null?

Энумы -- это не только ценный мех, хороши ещё и тем, что по ним можно делать switch-case. Что будет, если в такой switch-case попадет null-значение? Ответ: NullPointerException. Конструкция switch кидает NPE, как только в нее попадает null. Надежды на исполнение, например, default ветки в случае null, тщетны.
Код под катом.

enum TestEnum {
ABC, XYZ;
}
public class NullEnumSwitchTest {
public static void main(String[] args) {
test(TestEnum.ABC);
test(TestEnum.XYZ);
test(null);
}
private static void test(TestEnum t) {
switch (t) {
case ABC: System.out.println("abc!"); break;
case XYZ: System.out.println("xyz!"); break;
default : System.out.println("????"); break;
}
}
}
/*
C:\test\>java NullEnumSwitchTest
abc!
xyz!
Exception in thread "main" java.lang.NullPointerException
at NullEnumSwitchTest.test(NullEnumSwitchTest.java:13)
at NullEnumSwitchTest.main(NullEnumSwitchTest.java:9)
*/

No comments: