Home > Java > javaTutorial > How are Singleton Instances Created in Java Enums?

How are Singleton Instances Created in Java Enums?

Mary-Kate Olsen
Release: 2024-12-03 22:00:21
Original
722 people have browsed it

How are Singleton Instances Created in Java Enums?

Singleton Implementation using Enums in Java

It has been noted that the Singleton pattern can be implemented in Java using enums, as demonstrated by the following code:

public enum MySingleton {
     INSTANCE;   
}
Copy after login

However, questions arise regarding the instantiation process. Traditional object instantiation involves invoking the constructor, but in enums, this is not explicitly done.

Instantiating Enums

Enums have an implicit empty constructor. To make it explicit, you can add it to the enum definition:

public enum MySingleton {
    INSTANCE;
    private MySingleton() {
        System.out.println("Here");
    }
}
Copy after login

Now, if you create a class with a main method and instantiate the Singleton enum:

public static void main(String[] args) {
    System.out.println(MySingleton.INSTANCE);
}
Copy after login

You will see the following output:

Here
INSTANCE
Copy after login

Enum fields are essentially instances of the enum type. They are constructed when the enum type is first referenced. Hence, when you access the INSTANCE field in the main method, it triggers the instantiation of MySingleton and its constructor runs, printing "Here" to the console.

The above is the detailed content of How are Singleton Instances Created in Java Enums?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template