아이템16, 조금 애매한 것 같습니다.
610
작성한 질문수 53
안녕하세요. 항상 좋은 강의 해주셔서 감사합니다.
한 가지 질문드리고 싶은 것이 있습니다.
기선님께서 강의에서 public 가변 필드를 노출하면, 언제 어디서 값이 바뀔지 모르기 때문에 객체의 복사가 필요하고 그에 따라서 성능 저하가 발생할 수 있다고 말씀을 해주셨습니다.
그런데 private 필드로 선언하더라도, public setter나 필드의 변경 지점을 제공한다면 동일한 문제를 내포하는 것이 아닌가요?
예를 들어 아래와 같이 코드를 작성한다면, doSomething에서도 Setter가 열려있기 때문에 doSomething 내부에서 값을 복사해서 쓰거나, main 내부에서 값을 복사해서 써야하는 것은 매한가지 인 것 같습니다.
public static void main(String[] args) {
TestClass testClass = new TestClass(1,1);
System.out.println(testClass.getT());
doSomething(testClass);
System.out.println(testClass.getT());
}
private static void doSomething(TestClass testClass) {
testClass.setT(10);
}기선님께서 말씀하셨던 의도는 setter() 역시 공개되지 않은 상황일 때를 말씀하실까요?
답변 1
0
네 말씀하신대로 단순 세터나 게터랑은 차이가 없는데요. 그래도 기술적으로 메서드를 통해서 접근하는 것과 필드에 직접 접근하는 것은 차이가 있습니다. 메서드를 통해서 접근하는 것들은 추후에 메서드에서 로직을 통해값을 검증하거나 성능을 개선하거나 무언가를 변경할 수 있겠지만 필드를 public하게 열어 놓은 것들은 그럴수 있는 가능성 조차 없으니까요.
네이버 API | '검색 - 책' API 제공 중단
0
11
0
ArticleReadService 관련 질문
0
9
0
kafka 이벤트 발행 실패 시 at-least-once를 보장하는 방법이 궁금합니다.
1
28
1
이론 공부법 요약본 버전 업데이트 문의
0
12
1
domain에 @Entity 와 Repository를 함께 둔 이유가 궁금합니다
1
20
1
해당 프로젝트를 똑같이 따라하려니 spring installer가 버전이 17부터 가능하네요.
0
11
1
Part 2 듣기전 복습하던 중, 아키텍처에 관한 질문이 있습니다.
0
26
2
테스트는 인터페이스를 대상으로 만드는것에 대해 궁금한 점이 있습니다.
0
13
1
Jib 이미지 빌드에서 docker credential 관련으로 이슈가 있다면
1
56
1
리뉴얼 시기
0
32
2
스크립트에 대해 질문 있습니다.
1
50
1
같은 사용자가 연속된 중복 호출할 경우 어떻게 되는지 궁금합니다!
2
54
1
조건 검색 질문
0
31
1
JPA 엔티티로 만들었다고 기술종속이 아닌지에 대한 질문
0
46
3
클로드코드 명령어-대화&세션관리 수업 자료
0
37
1
정처기 필기 준비할때 이 이론을 다시 외워도 될까요?
0
52
2
PlatformTransactionManager, ResourcelessTransactionManager 질문
1
58
2
자료 한번에 다운받기
0
29
1
강의 소스 코드 관련 질문 드립니다.
0
59
1
아이템 28 타입 안전
0
440
1
아이템19 - 구체 클래스가 표준 인터페이스를 구현하지 않았는데 상속을 금지하면 사용하기에 상당히 불편해진다.
1
467
2
다음 강의 질문
0
456
1
아이템 32. 핵심 정리 12:00 이 부분에서 질문이 있습니다.
1
515
1
아이템31 비한정적와일드카드
1
384
0





