-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
자바 Private 관련 문의
23.01.20 11:37 작성 조회수 200
1
자바에서 아래 코드가
private Integer age;
코틀린으로 변환하면
val age: Int?, // 나이는 null일 수 있지만 불변
이라고 하셨는데, 자바에서 private이 불변인가요 ? 클래스 내에서 수정할 수 있다고 알고 있는데 불변인건가요?
실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
13강. 도메인 계층을 Kotlin으로 변경하기 - UserLoanHistory.java, User.java
강의실 바로가기
답변을 작성해보세요.
1
최태현
지식공유자2023.01.20
안녕하세요, kimminji0511님!!! 아이고~~ 너무너무 좋은 포인트 질문 남겨주셔서 감사합니다!!! 🙇🙇
우선 저도 강의에서 어떻게 이야기했는지 확인해보니
"나이는 null이지만 (User.java
로직을 살펴보고) 불변이니까~ val age..." 라고 했더라고요!!!
결론부터 말씀드리면, kimminji0511님께서 짚어주신것처럼 private Integer age
를 Kotlin으로 그대로 옮긴다면, var age: Int?
가 맞습니다!!
private final
이 아니고 그냥 private
이기 때문에 원칙적으로 age
는 변경될 수 있고 이를 Kotlin으로 그냥 옮기면 값을 수정할 수 있는 var
이 되어야 하죠!
다만 조금 더 설명드려보자면, 제가 의도한 내용은 이랬습니다! 🥺
age
는private Integer age
로 값을 바꿀 수는 있으나User
의 로직상 실제로age
가 바뀌는 로직은 존재하지 않는다.때문에 '비즈니스적으로'
age
는 불변이고,가급적 필드를 만들 때에 가변(
var
) 보다는 불변(val
)으로 만드는게 좋으니 (우선 val로 만들고 꼭 필요한 경우에 var로 여는게 좋으니)val age: Int?
로 옮기면 좋겠다!
하지만 이런 설명이 부족했던 점은 분명 맞습니다.
kimminji0511님 덕분에 다른 분들도 부족했던 연결고리를 더 채워나가실 수 있을 것 같습니다!! 🙏🙏
좋은 포인트 짚어주셔서 정말 감사드립니다!!
혹시나 다른 부분도 궁금하신 점 생기시면 언제든지 편하게 질문 남겨주세요!!
새해복 많이 받으세요! 감사합니다!!! 🙇🙇
답변 1