Effective Java 학습 노트 제2 조 --- 개인 구조 함수 로 singleton 속성 강화
2002 단어 자바
public class Elvis {
public static final Elvis INSTANCE = new Elvis();
private Elvis() { }
public void leaveTheBuilding() {
System.out.println("Who a baby, I'm outta here!");
}
// This code would normally appear outside the class!
public static void main(String[] args) {
Elvis elvis = Elvis.INSTANCE;
elvis.leaveTheBuilding();
}
}
방법 2: 공유 정적 final 필드 가 아 닌 공유 정적 방법 을 제공 합 니 다.이 방식 은 더 큰 유연성 을 제공 하여 API 를 바 꾸 지 않 는 전제 에서 이 종 류 를 singleton 또는 비 singleton 으로 바 꿀 수 있다.view plaincopy to clipboardprint?
public class Elvis {
private static final Elvis INSTANCE = new Elvis();
private Elvis() { }
public static Elvis getInstance() { return INSTANCE; }
public void leaveTheBuilding() {
System.out.println("Who a baby, I'm outta here!");
}
// This code would normally appear outside the class!
public static void main(String[] args) {
Elvis elvis = Elvis.getInstance();
elvis.leaveTheBuilding();
}
}
일반적으로 첫 번 째 방법 은 효율 이 약간 높 은 다음 에 첫 번 째 방법 으로 singleton 을 실현 한 후에 변 할 여지 가 없다. 이런 종 류 를 비 singleton 으로 바 꾸 려 면 분명히 안 된다.그 러 니 이 종류 가 singleton 이라는 것 이 확실 하지 않 으 면 첫 번 째 방법 을 사용 하 세 요.두 번 째 방법 을 사용 할 때, 만약 이 클래스 가 serializable 인 터 페 이 스 를 실현 한다 면, 다시 쓰기 (override) readResolve () 방법 을 사용 해 야 합 니 다. 그렇지 않 으 면 다시 정렬 할 때 새로운 실례 가 생 길 수 있 습 니 다. 이것 은 singleton 과 어 긋 납 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.