The following code does not compile:
public class A { public static void main(String[] args) { int i = Integer.parseInt(args[0]); switch (i) { case X: System.out.println("ONE!"); break; case Y: System.out.println("TWO!"); break; default: System.out.println("ZERO!"); break; } } public static final int X = B.getNumber("X"); public static final int Y = B.getNumber("Y");}class B { public static int getNumber(String s) { if (s.equals("X")) { return 1; } else if (s.equals("Y")) { return 2; } else { return 0; } }}
The compile error is:
A.java:5: constant expression required case X: System.out.println("ONE!"); break; ^A.java:6: constant expression required case Y: System.out.println("TWO!"); break; ^2 errors
I think I'll leave explaining why as an exercise for the reader. (Or for a future post. ;-)