Enums in Java

An enum type is a special data type in java used to define collections of constants. More precisely as of Java 5, Java lets you restrict a variable to have one of only a few pre-defined values – in other words, one value from an enumerated list called enums.

Enum Example

In java you define an enum type using the enum  keyword. For example, you would specify review status of an article using enum type as:

package com.sneppets.corejava;

public enum ReviewStatus {
	
	SUBMITTED_FOR_REVIEW,
	REVIEWING,
	REVIEWED,
	PUBLISHED
}

The basic components of an enum  are its constants. And it’s not required to use caps for all the enum constants, but it’s good idea to use caps as per Oracle’s code convention.

Enum outside a class example:

Here is an example, which shows how to use enum outisde a class

package com.sneppets.corejava;

enum ReviewStatus { SUBMITTED_FOR_REVIEW, REVIEWING, REVIEWED, PUBLISHED}

class Review {
	ReviewStatus status;
}

public class ReviewTest {

	public static void main (String[] args) {
		Review review = new Review();
		review.status = ReviewStatus.REVIEWED; // enum outside a class
	}
}

The above code can be part of single file. But the file must be named ReviewTest.java because that’s the name of the public  class in the file.

Enum inside a class example:

Here is an example, which shows how to use enum inside a class

package com.sneppets.corejava;

class Review {
	
	enum ReviewStatus { SUBMITTED_FOR_REVIEW, REVIEWING, REVIEWED, PUBLISHED}
	ReviewStatus status;
}

public class ReviewTest {

	public static void main (String[] args) {
		Review review = new Review();
		review.status = Review.ReviewStatus.REVIEWED; // enum inside a class
	}
}

The important point that you should note is enums  can be declared as their own class or enclosed in another class, but the syntax for accessing enum  members depends on where the enum  is declared.

Note:
  • You cannot declare enums  in methods.
  • It is optional to put semicolon ;  at the end of enum  declaration.
What is getting created when you create enum ?

Please note that enums  are not strings  or ints . In the above example each of the enumerated ReviewStatus  types is the instance of ReviewStatus . You can think of enum as a kind of class which looks something like the following

package com.sneppets.corejava;

public class ReviewStatus {
	
	public static final ReviewStatus SUBMITTED_FOR_REVIEW = 
			new ReviewStatus("SUBMITTED_FOR_REVIEW", 0);
	public static final ReviewStatus REVIEWING = 
			new ReviewStatus("REVIEWING", 1);
	public static final ReviewStatus REVIEWED = 
			new ReviewStatus("REVIEWED", 2);
	public static final ReviewStatus PUBLISHED = 
			new ReviewStatus("PUBLISHED", 3);
	
	ReviewStatus(String enumName, int index) {
		//your code here
	}
	
	public static void main (String[] args){
		System.out.println(ReviewStatus.REVIEWED);
	}

}

Note that each of enumerated values are represented as static  and final (constants) and each enum  value knows its index or position. You can think of the ReviewStatus enums as existing in an array of type ReviewStatus.

Leave a Reply

avatar
  Subscribe  
Notify of