public static final로 선언된 배열의 경우에는 참조되어 있는 값을 변경이 가능하니 이를 방지하고자 두 가지 방법을 제시하는 것 같습니다.
첫 번째는 Collections의 unmodifiableList 메서드를 활용한 방법으로 이 메서드로 생성된 List는 add(), set(), addAll() 등 List의 값을 수정하는 메서드를 사용시 UnsupportedOperationException가 발생하여 인위적으로 클라이언트가 배열을 수정할 수 없도록 유도하고 있네요
두 번째는 clone 메서드를 통해 원본 배열이 아닌 복사본을 제공하여 배열이 수정되더라도 원본 배열에는 문제가 생기지 않도록 방지하는 걸로 생각됩니다. 만약에 원본 배열을 그대로 제공한다면 프로그래밍이 실행되고 있을 때 원본 배열을 수정하는 코드를 클라이언트가 작성한다면 원본 배열을 사용하고 있는 곳은 계속해서 달라진 값을 사용하게 되니까요.
public static final로 선언된 배열의 경우에는 참조되어 있는 값을 변경이 가능하니 이를 방지하고자 두 가지 방법을 제시하는 것 같습니다.
첫 번째는 Collections의 unmodifiableList 메서드를 활용한 방법으로 이 메서드로 생성된 List는 add(), set(), addAll() 등 List의 값을 수정하는 메서드를 사용시 UnsupportedOperationException가 발생하여 인위적으로 클라이언트가 배열을 수정할 수 없도록 유도하고 있네요
두 번째는 clone 메서드를 통해 원본 배열이 아닌 복사본을 제공하여 배열이 수정되더라도 원본 배열에는 문제가 생기지 않도록 방지하는 걸로 생각됩니다. 만약에 원본 배열을 그대로 제공한다면 프로그래밍이 실행되고 있을 때 원본 배열을 수정하는 코드를 클라이언트가 작성한다면 원본 배열을 사용하고 있는 곳은 계속해서 달라진 값을 사용하게 되니까요.