Collection抛出UnsupportedOperationException

时间:2014-05-08 14:56:07

标签: java exception collections

我在以下代码中调用add()时收到UnsupportedOperationException:

Collection<MyClass> myClass = method();
MyClass newObject = new MyClass();
myClass.add(newObject);

method()返回Collection<MyClass>

另外,如果方法返回null或空集合,我该怎么办?

3 个答案:

答案 0 :(得分:4)

根据javadocs,some Collections do not support the add() methodCollection只是一个接口,您需要查看Collection的实现类型。您可以在调试器中或使用myClass.getClass().getName()

执行此操作

答案 1 :(得分:4)

此错误表示该方法选择返回只读集合。如果要添加其他项,则需要从中创建新集合。例如:

List<Thing> things = new ArrayList<>(method());
things.add(new Thing());

答案 2 :(得分:0)

一旦你找到了什么类型的method()返回,你应该(1)创建一个扩展method()类型的类并实现add()方法,将myClass初始化为该类的对象。 (2)将方法()的返回对象返回到另一种实现add()的类。我建议(1)保留method()返回类中的其他功能。