English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
초기화 후 변경할 수 없는 객체를 생성할 때마다 불변 객체를 정의할 수 있습니다. 불변 객체를 생성하는 특정 규칙은 없으며, 초기화 후 클래스 필드에 대한 접근을 제한하는 것이 그 생각입니다.
Set은 모음 프레임워크의 인터페이스로 중복된 값은 허용하지 않습니다.
불변 집합을 생성할 때에는 다음과 같은 점을 기억해야 합니다:
요소를 추가하거나 제거할 수 없어야 합니다.
불변 집합에 널 값을 추가할 수 없어야 합니다.
불변 집합을 생성하면, 이에 대한 객체를 추가하거나 제거할 수 없지만, 저장된 객체를 수정할 수 있습니다.
Java9의 of() 메서드는 요소 목록을 받아들여 주어진 요소들의 불변 집합을 생성하고 반환합니다. 이 메서드를 사용하여 Java로 불변 집합을 생성할 수 있습니다.
import java.util.Set; public class ImmutableSet { public static void main(String args[]) { Set<Integer> set = Set.of(1458, 5548, 4587); System.out.println(set); } }
이 메서드는 수집 객체를 매개변수로 받아 그의 불변 형태를 반환합니다.
필요한 객체를 전달하여 그의 불변 형태를 가져오기 위해 이 메서드를 호출합니다.
다음 Java 프로그램에서 HashSet 객체를 생성하고 unmodifiableSet() 메서드를 사용하여 불변 객체로 변환하여 요소를 추가하려고 시도합니다.
우리가 그를 불변으로 설정했기 때문에 실행 시간 예외가 발생합니다.
import java.util.Collections; import java.util.HashSet; import java.util.Set; public class ImmutableSet { public static void main(String args[]) { Set<Integer> hashSet = new HashSet<Integer>(); //HashSet을 채우기 hashSet.add(1124); hashSet.add(3654); hashSet.add(7854); hashSet.add(9945); System.out.println(hashSet); //set 객체를 불변 객체로 변환 Set immutable = Collections.unmodifiableSet(hashSet); immutable.add(4466); } }
출력 결과
[1124, 3654, 9945, 7854] Exception in thread "main" java.lang.UnsupportedOperationException at java.util.Collections$UnmodifiableCollection.add(Unknown Source) at MyPackage.ImmutableSet.main(ImmutableSet.java:19)