Энумы хороши ещё и тем, что по ним можно делать switch-case. Что будет, если в такой switch-case попадет null-значение? Ответ: NullPointerException. Конструкция switch кидает NPE, как только в нее попадает null. Надежды на исполнение, например, default ветки в случае null, тщетны.
Код под катом.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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:
Post a Comment