我在以下代码中调用add()
时收到UnsupportedOperationException:
Collection<MyClass> myClass = method();
MyClass newObject = new MyClass();
myClass.add(newObject);
method()
返回Collection<MyClass>
。
另外,如果方法返回null或空集合,我该怎么办?
答案 0 :(得分:4)
根据javadocs,some Collection
s do not support the add()
method和Collection
只是一个接口,您需要查看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()返回类中的其他功能。