// java version: java17
public class SingleTon {
private SingleTon(){}
//What is the difference between a static inner class and an inner class in the singleton pattern?
//private static class InnerClass{
private class InnerClass{
public static SingleTon instance = new SingleTon();
}
public static SingleTon getInstance(){
return InnerClass.instance;
}
}
public class Test {
public static void main(String[] args) {
SingleTon instance1 = SingleTon.getInstance();
SingleTon instance2 = SingleTon.getInstance();
System.out.println(instance1 == instance2); // result: true;
}
}
Either a static inner class or an inner class makes the same result;
( https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html )
- I don't need the instance of the inner class. I only need to invoke the method
clinit
in Class loading phase.
Is the static inner class necessary in the singleton pattern?