Initializing the Enum Class in Java

In Java, we can do the following to initialize the class and call method inside this class:

public class MyClass {
  public String myClassMethod() {
    return "MyClass";
  }
}

.

public class Test {
  public static void main(String[] args) {
    MyClass myClass = new MyClass(); // initialize MyClass
    myClass.myClassMethod();// call a method      
  }
}

If my class is a class enum, the implementation will be as follows:

public enum MyEnumClass {
  INSTANCE;
  public String myEnumClassMethod() {
    return "MyEnumClass";
  }
}

.

public class Test {
  public static void main(String[] args) {
    MyEnumClass myEnumClass = MyEnumClass.INSTANCE;
    myEnumClass.myEnumClassMethod();
  }
}

Both of these cases work the same way, but they say it is better to implement enum. My question is: why and how does this happen?

+2
source share
2 answers

An enumis essentially a singleton pattern.

The JVM handles the initialization and storage of instances enum. To make this most clear, you can write:

public enum MyEnumClass {
    INSTANCE("some value for the string.");

    private final String someString;

    private MyEnumClass(final String someString) {
        this.someString = someString;
    }

    public String getSomeString(){
        return someString;
    }
}

And in another class:

public static void main(String[] args) {
    final MyEnumClass myEnumClass = MyEnumClass.INSTANCE;
    system.out.println(myEnumClass.getSomeString());
}

This will print "some value for the string."

, enum , .. static.

, equals MyClass,

new MyClass() == new MyClass();

false, :

MyEnumClass.INSTANCE == MyEnumClass.INSTANCE;

true. .. MyEnumClass.INSTANCE MyEnumClass.INSTANCE, MyClass new MyClass().

"".

An enum - String enum singleton, . , enum, , , .

, enum, , , , class.

INSTANCE someString, enum class...

enum , , class es , . - , .

+5

Singleton, Enum.

MyEnumClass.INSTANCE , .

, new MyClass(); .

. :

Enum Java?

, , 8-9 Java

0

Source: https://habr.com/ru/post/1691936/


All Articles