Érdekes "hibába" futottam bele minap, mégpedig egy nem várt NullPointerException keletkezett egy switch utasításban, amely kissé váratlanul ért... Tekintsük meg az alábbi rövid ki programot:
public class SwitchEnumTest { public static void main(String[] args) { Enum testEnum = null; switch (testEnum) { case ONE: System.out.println("ONE"); break; case TWO: System.out.println("TWO"); break; default: System.out.println("other"); } } public enum Enum { ONE, TWO, } }
Valamilyen oknál fogva elkövettem azt a hibát, hogy a fenti esetben a default ágon vártam a program továbbfutását, ám ehelyett az alábbi hibaüzenet örvendeztetett meg:
Exception in thread "main" java.lang.NullPointerException at SwitchEnumTest.main(SwitchEnumTest.java:7)
A hetedik sor a switch(testEnum), szóval ha enum osztály konkrét példánya szerint szeretnék switch utasítással elágaztatni a programunkat, akkor először vizsgáljunk null értékre.
Szerintetek hogy lehetne ezt elegánsan -- vagyis a switch köré írt if-else nélkül -- megoldani ezt a problémát? :)