[Java] The enum constant reference cannot be qualified in a case label of switch statement

Error message: "The enum constant reference cannot be qualified in a case label". Resolution: "Use unqualified values". Reason: "Prevents the use of multiple enum types".

"The enum constant reference cannot be qualified in a case label" is an error message you may encounter while using Java enum values against a switch statement. I assume you are aware Java allows "enums" to be used in switch statements other than convertible int values.

In Short

When a Java switch statement uses an enum parameter; qualified names of the enum values should not be used in case labels, but only the unqualified names; then switch statement will consider all the labels are referring to the enum type that is used as the parameter.

Why only unqualified values?

If qualified references were allowed for case labels; there would be no means to restrict the enum type used in the labels to be same as the parameter type of switch statement.

In Detail

An enum named “Status” which represent two statuses of an entity will be used in sample code.
package org.kamal.learnenum.user;

public enum Status {
    REGISTERED,
    TERMINATED
}

Following sample code uses “Status” enum to create a greeting message (based on a complex logic). Look at the way the case label is written in switch statement; consider the differences in lines marked as 1 & 2.

package org.kamal.learnenum.test;

import org.kamal.learnenum.user.Status;

public class TestStatus {
   public static String getMessage(Status status) {
       String message;
       switch (status) {
       // case Status.REGISTERED: // line 1
       case REGISTERED:            // line 2
         message = "Welcome";
           break;
       default:
           message = "Good bye";
           break;
       }
       return message;
   }
   
   public static void main(String[] args) {
       String name = "John";
       System.out.println(getMessage(Status.REGISTERED) + " " + name);
       System.out.println(getMessage(Status.TERMINATED) + " " + name);
   }
}

Status & TestStatus classes are in two different packages; so to refer to a Status enum value inside TestStatus class we must use qualified name like follows.
Status status = Status.REGISTERED;

However when it comes to case labels of switch statements; enum should not be referred using qualified names.
What? Are you sure?
Yes; that is the truth. Only unqualified enum value must be used for case labels.
The compiler will simply look at the type of the enum parameter to the switch() statement and refer to that enum class to locate the enum values.

COMMENTS

BLOGGER: 1
Loading...

Read More...

Name

About,2,Adsense,3,Ant,1,Apache,3,Axis,3,Blogger,1,Books,1,CentOS,2,Chrome,2,CSS,2,Database,3,Earn Online,3,Eclipse,10,Facebook,1,Firefox,10,Gmail,4,GNU/Linux,9,Google,26,GWT,8,Hardware,2,IE,5,Interesting,15,Internet,14,Java,49,Javascript,7,JBoss,1,Jenkins,1,Log4j,2,Me,6,Microsoft,2,Miscellaneous,1,News,11,Opinion,10,OSGi,1,PHP,1,Productivity,3,Programming,36,Puzzle,3,Security,4,Software,41,Sports,9,Spring,2,Story,6,Subversion,3,TDD,4,Tech,2,Tips,1,Tomcat,6,Tutorial,13,Ubuntu,4,Web application,14,Web Design,2,Web services,3,Windows,10,Yahoo,1,Zip,2,
ltr
item
Digizol: [Java] The enum constant reference cannot be qualified in a case label of switch statement
[Java] The enum constant reference cannot be qualified in a case label of switch statement
Error message: "The enum constant reference cannot be qualified in a case label". Resolution: "Use unqualified values". Reason: "Prevents the use of multiple enum types".
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO7MenTEBP7qlayl9gV8Q1_15HQp9Rt_-iWCkt9JoApgZ0P8tgsWECxt40WzfFSrb7TNI0Xp8PJqPEHyFYZhTCIOO21HzG4YVP9NzAW_hFwUDmQ-LqKyKmwNhByc2AmS7jdPJYPQ/s1600/technical-issue+www.digizol.com.jpg
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO7MenTEBP7qlayl9gV8Q1_15HQp9Rt_-iWCkt9JoApgZ0P8tgsWECxt40WzfFSrb7TNI0Xp8PJqPEHyFYZhTCIOO21HzG4YVP9NzAW_hFwUDmQ-LqKyKmwNhByc2AmS7jdPJYPQ/s72-c/technical-issue+www.digizol.com.jpg
Digizol
https://www.digizol.com/2010/10/enum-case-label-switch-java-qualified.html
https://www.digizol.com/
https://www.digizol.com/
https://www.digizol.com/2010/10/enum-case-label-switch-java-qualified.html
true
7440473
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS CONTENT IS PREMIUM Please share to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy