2011-11-09 2 views
3

클래스의 정적 필드에서 자체 인스턴스에 대한 참조를 유지하도록 할 수 있습니까? 그렇다면, 다른 누구도 참조를하지 않고서도 계속 살아있을 수 있습니까?정적 인스턴스 변수가 클래스의 인스턴스를 참조합니다.

public class StatTest { 
    private static StatTest statTest; 

    public static StatTest getStatTest() { 
     if (statTest== null) { 
      statTest= new StatTest(); 
      statTest.init(); 
     } 
     return statTest; 
    } 

    private StatTest() { } 
} 
+1

* 싱글 톤 * 패턴을 구현하는 한 가지 방법입니다. 이 메소드는 스레드로부터 안전하지 않습니다 (즉, 둘 이상의 스레드에서 StatTest.getStatTest()를 호출하면 문제가 발생할 수 있음). 다른 싱글 톤 구현 (thread로부터 안전한 것들을 포함하여)을 비교하려면, 내가 전에 쓴 대답 인 http://stackoverflow.com/questions/7121213/singleton-instantiation/7121246#7121246을 확인하십시오. –

+0

모든 해답을 가져 주셔서 감사합니다! 나는 이것이 정말로 잘 알려진 패턴이라는 것을 알게되었다. 전에 싱글 톤이라는 이름을 알아 봤지만 그것에 대해 읽은 적이 없습니다. 이제 진행 방법에 대한 정보를 쉽게 찾을 수 있습니다. 고마워! – joaerl

답변

7

예, 이것은 Singleton 디자인 패턴의 개념입니다.

2

이것은 클래스의 싱글 톤을 만드는 한 방법입니다.

  • 네, 그 인스턴스를 반환합니다 getStatTest() 방법에 대한 모든 참조
  • 수 있습니다 :

    그래서 귀하의 질문에 대답합니다. 싱글이 방법을 사용할 때, 상기 방법은 주로 getInstance()이라고

=)

1

다른 사람이 참조하지 않고 jvm에서 계속 유지됩니까?

예, 클래스 자체가 가비지 수집 대상이 아닌 경우 (사용자 정의 클래스 로더를 사용하는 경우에만 발생할 수 있음).

관련 문제