클래스의 private 필드를 수정못하게 막는 방법이 있나요?


public class Test
{
  private String[] arr = new String[]{"1","2"};    

  public String[] getArr() 
  {
    return arr;
  }
}

이런 코드가 있을때

Test test = new Test();
test.getArr()[0] ="some value!"; //!!!

이러면 여기서 문제가 private필드를 밖에서 접근하는거잖아요. 이걸 어떻게 막죠? 제 말은 저는 이 배열의 값이 변하는걸 막고싶은데 getter메소드는 어떻게든 private필드에 접근가능하게 만들어주잖아요. 어떻게 하면 좋을까요?

  • 2016년 01월 29일에 작성됨

조회수 202


1 답변


좋아요
0
싫어요
채택취소하기

getter메소드에서 배열의 복사본을 반환해주면 됩니다.

public String[] getArr() {
  return arr == null ? null : Arrays.copyOf(arr, arr.length);
}

이런식으로요.

  • 2016년 01월 29일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close