Java中是否存在不受支持的操作注释?

Chr*_*ght 11 java annotations

java中是否有任何注释将方法标记为不受支持?例如,假设我正在编写一个实现java.util.List接口的新类.此接口中的add()方法是可选的,我在实现中不需要它们,因此我要执行以下操作:

public void add(Object obj) {
   throw new UnsupportedOperationException("This impl doesn't support add");
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,有了这个,直到运行时才会发现事实上,这个操作不受支持.

理想情况下,这可能是在编译时捕获的,这样的注释(例如,可能 @UnsupportedOperation)会轻率地向这个方法的任何用户说"嘿,你正在使用不支持的操作",就像使用@Deprecated标志Eclipse一样突出显示已弃用项目的任何用途.

Jon*_*han 10

虽然从表面上看这听起来很有用,但实际上它并没有多大帮助.你通常如何使用清单?我通常做这样的事情:

List<String> list = new XXXList<String>();
Run Code Online (Sandbox Code Playgroud)

那里已经有一个间接,所以如果我打电话list.add("Hi"),编译器怎么知道列表的这个特定实现不支持呢?

这个怎么样:

void populate(List<String> list) {
    list.add("1");
    list.add("2");
}
Run Code Online (Sandbox Code Playgroud)

现在更难了:编译器需要验证对该函数的所有调用都使用了支持该add()操作的列表.

所以不,没有办法做你所要求的,对不起.