자바에서 싱글톤 패턴을 구현하는 방법 중 하나는 이너 클래스(inner class)를 사용하는 것입니다. 이너 클래스를 사용하면 더욱 간결하고 안전한 싱글톤 객체를 만들 수 있습니다.
다음은 이너 클래스를 사용하여 싱글톤 객체를 만드는 예제 코드입니다.
public class Singleton {
private Singleton() {}
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
위의 코드에서는 Singleton 클래스의 생성자를 private으로 선언하여 외부에서 객체를 생성할 수 없도록 하였습니다. 그리고 SingletonHolder라는 private static inner class를 만들어 Singleton 객체를 생성합니다. 이렇게 함으로써 SingletonHolder 클래스는 Singleton 객체에 대한 참조를 가지고 있으므로 Singleton 객체가 처음 생성될 때 한 번만 생성됩니다.
getInstance() 메소드는 SingletonHolder.INSTANCE를 반환하여 외부에서 싱글톤 객체에 접근할 수 있도록 합니다. 이 방법을 사용하면 Singleton 객체는 게으르게(lazy) 초기화되며, getInstance() 메소드가 호출될 때 SingletonHolder 클래스가 로드되고 Singleton 객체가 생성됩니다. 이 방법은 멀티스레드 환경에서도 안전합니다.