Blog

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

É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:

Code Block
languagejava
titleSwitchEnumTest.java
linenumberstrue
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:

Code Block
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? :)