UnsupportedOperationException
RuntimeException ném ra khi operation không được hỗ trợ. Phổ biến trong Collections Framework: Collections.unmodifiableList(), unmodifiableSet(), unmodifiableMap() trả về view read-only. Gọi add(), remove(), clear() trên view này → ném exception này.
Ví dụ
import java.util.*;
public class UnsupportedOpDemo {
public static void main(String[] args) {
List list = new ArrayList<>();
list.add("a");
list.add("b");
// Tạo view read-only
List unmod = Collections.unmodifiableList(list);
// Thử modify view -> exception
unmod.add("c"); // UnsupportedOperationException
}
}
Kết quả
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableCollection.add(Collections.java:1055)
at UnsupportedOpDemo.main(UnsupportedOpDemo.java:9)
Cách tránh
- Không modify view read-only. Modify list gốc (
list.add("c")) thì view sẽ phản ánh thay đổi. - Kiểm tra
if (collection instanceof RandomAccess)... không liên quan. Cách tốt: thiết kế API rõ ràng mutable/immutable. - Java 10+:
List.copyOf(list)tạo bản sao immutable an toàn.
Lưu ý: Exception này unchecked (extends RuntimeException), không bắt buộc try-catch.