java enumeration tutorial: Best 10 examples of enum constants in java
This tutorial explains Enumeration in java with examples.
What is Enum in java
Enum
is one of the cool languages featured and introduced as part of the Java 5 version. enum or enumeration values are constants meaning which does not change. These constants are specified using upper case letters as per java coding specifications.
Enum is introduced in Java 5 version, Before Java 5 was introduced, we have to write our constants to handle enum functionality as follows.
Enum can have a string of values or an integer only.
public class MonthsConstants{
public static final String JAN="1";
public static final String FEB="2";
..
}
public class MonthsConstantsTest
{ int monthsCode; //can assign any value like 1,2 or 100
}
You have to handle all your constants yourself and cause error-prone. These values are a valid type for compile-time only and give an error if the wrong type is assigned to these values. Moreover, you can assign any values. if we want to add new constants, it would be more work required for the maintenance of your code. Because of all these, the enum
class is introduced.
By default, enum
implements java.lang.Enum
which implements java.io.Serialization
and java.lang.Comparable
interfaces.
java enumeration API provides different methods like toString()
,name()
as well as valueOf()
methods
I am listing down the best enum examples in java
How to define an enum class?
Enum
declares with the enum
keyword. These are defined in a separate file or existing java classes.
If you define the enum class as public, Declaration should be in a separate java file.
It is one of the ways to define an enum in java.
public enum Months{
JAN(1),FEB(2),MAR(3),APRIL(4),MAY(5),JUN(6),JUL(7),AUG(8),SEP(9),OCT(10),NOV(11),DEC(12);
}
We are going to create this in a java class file and enum class name.
Please note that enum constants have a semicolon at the end of the constant definition.
- Defined Months Enum class
- Each Enum constant contains a String and integer value to it
How to define an enum in another class?
It is an example of an enum declaration in other classes.
public class MonthsClass{
public enum Months{
JAN(1),FEB(2),MAR(3),APRIL(4),MAY(5),JUN(6),JUL(7),AUG(8),SEP(9),OCT(10),NOV(11),DEC(12)
}
Months monthsNames;
}
In the above example, the enum class is created inside the Months Class. This approach does not require adding a semicolon at end of enum constants.
How to create an enum object?
we create enum
objects using the new
operator. and also we can attach constants to the enum class.
Here is an example of creating an object for an enum class
MonthsClass monthsObject=new MonthsClass();
monthsObject.monthsNames=MonthsClass.Months.JAN;
How to define an enum constructor?
Enum declarations are similar to a class, So Enum can have a constructor. It is called during enum object creation.
Constructors in an enum are private, meaning outside classes should not able to create enum objects creation.
public enum Months{
JAN(1),FEB(2),MAR(3),APRIL(4),MAY(5),JUN(6),JUL(7),AUG(8),SEP(9),OCT(10),NOV(11),DEC(12);
private int monthCode
Months(int monthCode){
this.monthCode=monthCode;
}
public int value(){
return monthCode;
}
How to compare Enum objects in Java?
Normally, we can compare objects using ==
and equals
methods enum constants can also be compared using the same approach.
if(Months.JAN==Months.FEB){return true else return false;}
we can also use the equals
method to compare the enum objects of the same type.
How to iterate enum constants
enum class provides the values()
method for iteration that returns a list of enum constants in the order of constants creation.
for(Months months:Months.values()){
System.out.print(" "+months);
}
output:
JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC
How to convert an enum to an integer?
Sometimes, You want to convert the enum constant to an integer. As defined enum declaration above
Months months=Months.Jan;
Integer int=new Integer(months.value());
The value
method in the enum provides the value
of the enum constants.
How to convert an integer to an enum constant?
we have to define the following method in class for returning the Enum
for the given input as an integer
static Months getMonths( int monthCode ) throws Exception
{
for (Months months : Months.values())
if (months.value() == monthCode)
return months;
}
Hope this solves the conversion to an enum by providing an integer as input to the above method
How to convert String to an enum object?
enum class provides the valueOf() method
to pass the string as an argument, which returns enum constants
Months month=Months.valueOf("JAN");
Months month=Months.valueOf("abc");
In the first line in the above code, the month object prints the string value as Jan
the second line, the valid string is not passed to an enum class, it throws java.lang.IllegalArgumentException
with the messageNo enum constants for your class
.
how to use the enum class in switch condition?
one of the coolest features of enum is we can use enum objects in switch case as like a primitive type
Months month=Months.JAN;
switch(month){
case JAN:
System.out.println("january");
break;
case FEB:
System.out.println("febrauary");}
break;
----
---
}
Enum class Advantages in java
- By default enum classes are implementing serialization, and overriding equals and hashcode methods so no need for explicit serialization implementation
- With the usage of the
Enum
class,EnumSet
andEnumMap
are introduced, a collection of enums operations can be achieved - Maintenance of code using enums is very easy
Enum class Disadvantages
enum class is extending java.lang.Enum
, the classes in java.lang
are final so enum classes cannot be sub-classed.
Hope you understand enum examples in java.
Please share your comments that how you are using the enum class in your development.