• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

자바 Private 관련 문의

23.01.20 11:37 작성 조회수 200

1

자바에서 아래 코드가

private Integer age;

코틀린으로 변환하면

val age: Int?, // 나이는 null일 수 있지만 불변

이라고 하셨는데, 자바에서 private이 불변인가요 ? 클래스 내에서 수정할 수 있다고 알고 있는데 불변인건가요?

답변 1

답변을 작성해보세요.

1

안녕하세요, kimminji0511님!!! 아이고~~ 너무너무 좋은 포인트 질문 남겨주셔서 감사합니다!!! 🙇🙇

우선 저도 강의에서 어떻게 이야기했는지 확인해보니

"나이는 null이지만 (User.java 로직을 살펴보고) 불변이니까~ val age..." 라고 했더라고요!!!

 

결론부터 말씀드리면, kimminji0511님께서 짚어주신것처럼 private Integer age 를 Kotlin으로 그대로 옮긴다면, var age: Int? 가 맞습니다!!

private final 이 아니고 그냥 private 이기 때문에 원칙적으로 age 는 변경될 수 있고 이를 Kotlin으로 그냥 옮기면 값을 수정할 수 있는 var 이 되어야 하죠!

 

다만 조금 더 설명드려보자면, 제가 의도한 내용은 이랬습니다! 🥺

  1. ageprivate Integer age 로 값을 바꿀 수는 있으나

  2. User 의 로직상 실제로 age 가 바뀌는 로직은 존재하지 않는다.

  3. 때문에 '비즈니스적으로' age 는 불변이고,

  4. 가급적 필드를 만들 때에 가변(var) 보다는 불변(val)으로 만드는게 좋으니 (우선 val로 만들고 꼭 필요한 경우에 var로 여는게 좋으니)

  5. val age: Int? 로 옮기면 좋겠다!

하지만 이런 설명이 부족했던 점은 분명 맞습니다.

 

kimminji0511님 덕분에 다른 분들도 부족했던 연결고리를 더 채워나가실 수 있을 것 같습니다!! 🙏🙏

좋은 포인트 짚어주셔서 정말 감사드립니다!!

 

혹시나 다른 부분도 궁금하신 점 생기시면 언제든지 편하게 질문 남겨주세요!!

새해복 많이 받으세요! 감사합니다!!! 🙇🙇