Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Tạo UnsupportedOperationException trong Java

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.