For various business reasons I want to hold some static IDs in one of my classes. They were originally int
but I wanted to change them to Integer
so I could do an equals on them (ie MY_ID.equals(..)
which avoids NPEs)
When I change them to Integer I get errors in my switch statement. The docs say that Integer should be ok within Switches.
To quote
[Switch] also works with enumerated types (discussed in Enum Types), the String class, and a few special classes that wrap certain primitive types: Character, Byte, Short, and Integer (discussed in Numbers and Strings).
In my code below if i is a int
then it compiles. When it is an Integer
it doesnt saying that a constant expression is required
. I have tried doing .intValue()
but this doesnt work either.
Am I being really stupid? Or completely misreading the docs?
private static final Integer i = 1;
@Test
public void test() {
switch(mObj.getId()){
case i: //do something
default: //do something default
}
}
Thanks for any pointers here. For the time being I am keeping them as int
and doing new Integer(myint).equals(...)