인스턴스 홀더에 관해서 질문이 있습니다.
물론 강의에서 사용하신만큼 로딩과 동시에 올라가지 않는다는 건 알겠는데 홀더 클래스가 가지고 있는 인스턴스는 어째서 바깥메서드에서 호출을 할 때 생성이 되는건가요?
제가 추측한 바로는 SettingsHolder라는 클래스가 innerClass인 동시에 private 이기 때문에 홀더 안의 인스턴스가 생성이 되지 않는 것 같습니다.
Câu trả lời 3
7
안녕하세요. 좋은 질문 감사합니다.
말씀하신 "바깥메서드"라는게.. getInstance()가 아닌 다른 메소드를 말씀하시는거죠?
static으로 선언된 필드는 설명드린대로 어떤 클래스가 처음 로딩이 될 때 정적인 메모리 공간에 만들어지는데, holder가 가지고 있는 클래스가 로딩이 되는 시점 자체은 getInstance()를 호출했을 때니까, getInstacne()가 아닌 다른 메소드 (holder를 참조하지 않는)를 사용할 경우에는 해당 클래스를 로딩할 필요가 없으니 결과적으로 SettingsHolder가 가지고 있는 static한 인스턴스도 만들어지지 않는거죠.
static inner classs는 별도로 분리되어있는 파일에 있는 클래스라고 생각하시면 좀 더 쉬울 수 있겠네요.
0
안녕하세요 선생님! 저도 이게 궁금했었는데 이 글을 보고 이해가 되는 듯 하면서도 추가적인 궁금증이 생겨 이렇게 댓글을 남깁니다.
선생님 말씀은 Settings 클래스의 field를 eager initialization 하는 방식은 Settings.getInstance() 이외의 다른 메서드가 호출이 되었을 때 instance가 미리 초기화되니까 크기가 클 경우 로딩시간, 메모리 낭비가 될 수 있다는 말씀이신거죠? SettingsHolder를 static inner class로 사용했을 때에는 무조건 Settings.getInstance() 첫 번째 호출에 의해서만 객체가 초기화되니까 자원 낭비가 없다는 말씀이시구요. 제가 이해한 게 맞나요 ...?
제가 이해한 게 맞다는 가정 하에 질문을 드리자면,
근데 어짜피 Settings 클래스가 Singleton이라 무조건 처음 이 클래스를 사용하려면 Settings.getInstance() 메소드를 호출해야 해서 다른 메소드를 먼저 호출하는 경우가 없을 것 같은데, 꼭 그런 건 아닌가요 ..? 무조건 처음 호출되는 메소드가 Settings.getInstance() 라면 static inner class를 사용하는 것과 Settings class의 field에 그냥 초기화 하는 방법이랑 클래스 로딩 시점은 완전 같을 것 같아서요...
답변 주시면 감사하겠습니다^^
많이 사용되는 패턴의 순서를 정한다면 어떤 순서일까요?
0
112
1
@Builder에 대해 사소한 질문
0
52
1
default 기능이 있는 interface와 추상클래스의 차이
0
50
1
실무 코드에 디자인 패턴 적용 시의 '기준'에 대해 조언을 얻고 싶습니다.
0
42
1
데코레이터 패턴, before 가 O(2^n) 인 이유
0
42
0
혹시 다음강의는 언제쯤..
0
346
1
volatile 사용 이유에 대해서 여쭤보고 싶습니다!
0
616
3
Spring Security 의 ProviderManager (AuthenticationManager) 도 옵저버 패턴을 사용하고 있다고 볼 수 있을까요?
0
391
2
싱글톤 패턴을 깨트리는 방법
0
551
1
코드에 약간 오타가 있는거 같습니다.
0
430
1
싱글톤 (Singleton) 패턴 구현 방법 3 - 2번 퀴즈에 대해 질문이 있습니다.
0
568
2
안녕하세요, 강의 순서 질문드립니다.
0
685
1
스프링 시큐리티 WebSecurityConfigurerAdapter deprecated 대체 코드
0
2431
1
팩토리메소드 = 추상팩토리?
2
922
1
중재자 패턴에 관하여~
0
510
1
undo 메소드 작업중에서
1
365
1
익명클래스로 객체 생성시 의문점
0
586
1
mediator패턴에서 객체끼리 순환참조는 어떻게 해결해야할까요
0
479
1
객체간에 this를 넘기는 부분에 관련해 질문이 있습니다..
1
366
1
전략 패턴과 상태 패턴에 관련해서 질문이 있습니다.
0
283
1
플라이웨이트 패턴 3부에서 HashMap 동시성 질문입니다.
0
259
1
enum 이 이른 초기화 방법이 아니라는 것은,
0
505
1
해당 코드가 C# 에선 접근 관련 컴파일 에러가 뜹니다.
0
434
1
설계관련 궁금증이 있습니다.
0
327
0

