在Java编程语言中,当你试图调用一个当前环境或对象不支持的方法时,就会抛出这个异常。例如:
- 调用不可变集合(如通过Collections.unmodifiableList()创建的列表)的添加、删除或修改方法。
- 使用Arrays.asList()返回的对象尝试修改其内容。
- 在实现了某个接口但未提供所有必需实现方法的类上调用那些未实现的方法。
- 当你在使用一些设计为只读或特定条件下不支持修改操作的API时。
总之,当程序中执行了一个在运行时被明确标记为不支持或未实现的操作时,Java虚拟机将会抛出java.lang.UnsupportedOperationException,提醒开发者该操作在此上下文中是不允许的。
点击查看代码
package com.itheima.javase;
import java.util.Arrays;
import java.util.List;
public class A5 {
public static void main(String[] args) {
List<Integer> list= Arrays.asList(1,0,2,4);
System.out.println(list);
System.out.println(list.size());
System.out.println(list.get(0));
System.out.println(list.contains(0));
list.add(2048);
System.out.println(list);
}
}
[1, 0, 2, 4]
Exception in thread "main" java.lang.UnsupportedOperationException
4
at java.util.AbstractList.add(AbstractList.java:148)
1
at java.util.AbstractList.add(AbstractList.java:108)
true
at com.itheima.javase.A5.main(A5.java:19)
Process finished with exit code 1
在Java中,当我使用Arrays.asList()方法创建一个列表时,它返回的是一个固定大小的列表,具体类型是java.util.Arrays$ArrayList。这个类继承自AbstractList,并且不支持添加或删除元素,也就是说它是一个不可变列表。
当我尝试执行list.add(2048)操作时,由于这个特殊的ArrayList实现不支持添加元素(即不覆盖了父类AbstractList中的add方法),所以会抛出UnsupportedOperationException异常,为了能够添加元素到列表中,请考虑使用常规的ArrayList或LinkedList等可变集合类来替代Arrays.asList()创建的不可变列表。例如:List