
- Java - Home
- Java - Overview
- Java - History
- Java - Features
- Java Vs. C++
- JVM - Java Virtual Machine
- Java - JDK vs JRE vs JVM
- Java - Environment Setup
- Java - Hello World Program
- Java - Comments
- Java - Basic Syntax
- Java - Variables
- Java - Data Types
- Java - Type Casting
- Java - Unicode System
- Java - User Input
- Java - Date & Time
Java Operators
- Java - Operators
- Java - Arithmetic Operators
- Java - Assignment Operators
- Java - Relational Operators
- Java - Logical Operators
- Java - Bitwise Operators
- Java Operator Precedence & Associativity
Java Control Statements
- Java - Decision Making
- Java - If Else Statement
- Java - Switch Statement
- Java - Loop Control
- Java - For Loop
- Java - For-Each Loop
- Java - While Loop
- Java - Do While Loop
- Java - Break Statement
- Java - Continue Statement
Object Oriented Programming
- Java - OOPs Concepts
- Java - Object & Classes
- Java - Class Attributes
- Java - Class Methods
- Java - Methods
- Java - Variables Scope
- Java - Constructors
- Java - Access Modifiers
- Java - Inheritance
- Java - Aggregation
- Java - Polymorphism
- Java - Overriding
- Java - Method Overloading
- Java - Dynamic Binding
- Java - Static Binding
- Java - Instance Initializer Block
- Java - Abstraction
- Java - Encapsulation
- Java - Interfaces
- Java - Packages
- Java - Inner Classes
- Java - Static Class
- Java - Anonymous Class
- Java - Singleton Class
- Java - Wrapper Classes
- Java - Enums
- Java - Enum Constructor
- Java - Enum Strings
Java Built-in Classes
Java File Handling
- Java - Files
- Java - Create a File
- Java - Write to File
- Java - Read Files
- Java - Delete Files
- Java - Directories
- Java - I/O Streams
Java Error & Exceptions
- Java - Exceptions
- Java - try-catch Block
- Java - try-with-resources
- Java - Multi-catch Block
- Java - Nested try Block
- Java - Finally Block
- Java - throw Exception
- Java - Exception Propagation
- Java - Built-in Exceptions
- Java - Custom Exception
Java Multithreading
- Java - Multithreading
- Java - Thread Life Cycle
- Java - Creating a Thread
- Java - Starting a Thread
- Java - Joining Threads
- Java - Naming Thread
- Java - Thread Scheduler
- Java - Thread Pools
- Java - Main Thread
- Java - Thread Priority
- Java - Daemon Threads
- Java - Thread Group
- Java - Shutdown Hook
Java Synchronization
- Java - Synchronization
- Java - Block Synchronization
- Java - Static Synchronization
- Java - Inter-thread Communication
- Java - Thread Deadlock
- Java - Interrupting a Thread
- Java - Thread Control
- Java - Reentrant Monitor
Java Networking
- Java - Networking
- Java - Socket Programming
- Java - URL Processing
- Java - URL Class
- Java - URLConnection Class
- Java - HttpURLConnection Class
- Java - Socket Class
- Java - Generics
Java Collections
Java Interfaces
- Java - List Interface
- Java - Queue Interface
- Java - Map Interface
- Java - SortedMap Interface
- Java - Set Interface
- Java - SortedSet Interface
Java Data Structures
Java Collections Algorithms
Advanced Java
- Java - Command-Line Arguments
- Java - Lambda Expressions
- Java - Sending Email
- Java - Applet Basics
- Java - Javadoc Comments
- Java - Autoboxing and Unboxing
- Java - File Mismatch Method
- Java - REPL (JShell)
- Java - Multi-Release Jar Files
- Java - Private Interface Methods
- Java - Inner Class Diamond Operator
- Java - Multiresolution Image API
- Java - Collection Factory Methods
- Java - Module System
- Java - Nashorn JavaScript
- Java - Optional Class
- Java - Method References
- Java - Functional Interfaces
- Java - Default Methods
- Java - Base64 Encode Decode
- Java - Switch Expressions
- Java - Teeing Collectors
- Java - Microbenchmark
- Java - Text Blocks
- Java - Dynamic CDS archive
- Java - Z Garbage Collector (ZGC)
- Java - Null Pointer Exception
- Java - Packaging Tools
- Java - Sealed Classes
- Java - Record Classes
- Java - Hidden Classes
- Java - Pattern Matching
- Java - Compact Number Formatting
- Java - Garbage Collection
- Java - JIT Compiler
Java Miscellaneous
- Java - Recursion
- Java - Regular Expressions
- Java - Serialization
- Java - Strings
- Java - Process API Improvements
- Java - Stream API Improvements
- Java - Enhanced @Deprecated Annotation
- Java - CompletableFuture API Improvements
- Java - Streams
- Java - Datetime Api
- Java 8 - New Features
- Java 9 - New Features
- Java 10 - New Features
- Java 11 - New Features
- Java 12 - New Features
- Java 13 - New Features
- Java 14 - New Features
- Java 15 - New Features
- Java 16 - New Features
Java APIs & Frameworks
Java Class References
- Java - Scanner
- Java - Arrays
- Java - Strings
- Java - Date
- Java - ArrayList
- Java - Vector
- Java - Stack
- Java - PriorityQueue
- Java - LinkedList
- Java - ArrayDeque
- Java - HashMap
- Java - LinkedHashMap
- Java - WeakHashMap
- Java - EnumMap
- Java - TreeMap
- Java - IdentityHashMap
- Java - HashSet
- Java - EnumSet
- Java - LinkedHashSet
- Java - TreeSet
- Java - BitSet
- Java - Dictionary
- Java - Hashtable
- Java - Properties
- Java - Collection
- Java - Array
Java Useful Resources
Java - Enum Class
In Java, enum (short for enumeration) is a special type of class that allows you to define a group of constants(fixed). It gives type safety(can assign only predefined values) and provide a way to group related values under a single type, making your code more readable and maintainable.
To create an enum, use the enum keyword and make sure the constants are in uppercase letter and separated by a comma.
Why Do We Need Enums?
Without enums, constants are usually defined with public static final int variables. But this is not corrcet because any number could be assigned, even invalid ones. Enums solve this problem by grouping related constants together and allowing only valid predefined values. Enum declaration can be done outside a class or inside a class, but not inside a method.
Different scenarios where enums are better than constants −
- Days of the week
- Directions(NORTH, SOUTH, EAST, WEST)
- Seasons(WINTER, SPRING, SUMMER, RAINY)
- Status codes (RUN, STOP)
Syntax
Declaring an enum is similar to declaring a class, but it uses the 'enum' keyword instead of 'class'.
public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; }
File Class methods
Let's see the below methods of enum class−
Sr.No. | Method & Description |
---|---|
1 |
int compareTo(E o)
This method compares this enum with the specified object for order. |
2 |
boolean equals(Object other)
This method returns true if the specified object is equal to this enum constant. |
3 |
Class<E> getDeclaringClass()
This method returns the Class object corresponding to this enum constant's enum type. |
4 |
int hashCode()
This method returns a hash code for this enum constant. |
5 |
String name()
This method returns the name of this enum constant, exactly as declared in its enum declaration. |
6 |
int ordinal()
This method returns the ordinal of this enumeration constant (its position in its enum declaration, where the initial constant is assigned an ordinal of zero). |
7 |
String toString()
This method returns the name of this enum constant, as contained in the declaration. |
8 |
static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)
This method returns the enum constant of the specified enum type with the specified name. |
Lets see the below some examples of enum in diferent cases −
Enum in a Switch Statement
Following example showcases the usage of enum in if and switch statements.
public class EnumDemo { public static void main(String args[]) { //print an Enum System.out.println(Mobile.Motorola); Mobile mobile = Mobile.Samsung; //Usage in IF statment if(mobile == Mobile.Samsung) { System.out.println("Matched"); } //Usage in Swith statment switch(mobile) { case Samsung: System.out.println("Samsung"); break; case Nokia: System.out.println("Nokia"); break; case Motorola: System.out.println("Motorola"); } } } enum Mobile { Samsung, Nokia, Motorola }
Let us compile and run the above program. It will produce the following result −
Motorola Matched Samsung
Enum inside a Class
Following example showcases the usage of enum in inside a class −
public class TrafficSignal { // enum declared inside a class enum Light { RED, YELLOW, GREEN } public static void main(String[] args) { Light signal = Light.RED; System.out.println("Signal is: " + signal); } }
Let us compile and run the above program. It will produce the following result −
Signal is: RED
Enum Outside a Class
Following example showcases the usage of enum outside a class −
public class Test { public static void main(String[] args) { Color c1 = Color.RED; System.out.println("Selected color: " + c1); } } enum Color { RED, GREEN, BLUE; }
Let us compile and run the above program. It will produce the following result −
Selected color: RED
Conclusion
In Java, an enum is a special kind of class. Unlike a normal class where you create objects using the new keyword, an enum automatically creates its objects, which are the constants.
A normal class can extend another class and have public constructors, but an enum always extends java.lang.Enum and cannot be explicitly extended, and its constructors are private. While classes are used to model real-world entities like Car or Student, enums are used to represent a fixed set of constants such as days of the week, directions, or status codes.