A case constant must evaluate to the same type as the switch expression can use, with one additional�and big�constraint: the case constant must be a compile time constant! Since the case argument has to be resolved at compile time, that means you can use only a constant or final variable that is assigned a literal value. It is not enough to be final, it must be a compile time constant. For example:
Can anyone please explain me the sentence and why it is giving compile error for case b. Please ranchers...
because when you declared one variable as a final, is necessary that you define one value. Because with the modifier final the variable not have value default and in case switch �s necessary that each case have one value constant.
In the below code you can see why a compile time constant is being insisted upon. Even though it is defined as final, it varies at runtime with each instantiation. Hope this example clarifies your question.