我正在查看List的javadoc以找到允许替换元素( set(int,E))的方法,并且我看到该方法是“可选的”。我搜索了一会儿,发现另一个question得到了Laurence Gonsalves的答案。
但是我还有一个问题,直到现在每次我使用任何接口时,我都没想到实现会抛出运行时异常(除非我使用它错误或者如果它是实现代码中的错误),即使我当意外地试图将元素添加到不可变列表时我有例外,我没有意识到发生了什么。
我的问题是:如果我的API方法有一个List(或其他一些接口)参数,必须在该对象上调用“可选”操作,我该怎么办?
我知道需要更改作为方法中的参数接收的列表是值得怀疑的,但可能是必要的
答案 0 :(得分:2)
Java库本身一致地回答了你的两个问题"没有。"例如,实用程序方法Collections.shuffle
接受任何List
,如果传递给它的List
不支持必要的操作,则抛出异常。一般来说,坚持这种行为与Java库和主要的开发实践是一致的:继续使用List
就像它是可变的一样,如果有人传入List
不支持必要的操作,他们将得到他们应得的例外。