运行FindBug我收到了以下代码的警告:
public select(List<T> elements) {
if (elements == null)
throw new NullPointerException();
通过以下说明:
避免抛出NullPointerException - 因为大多数情况令人困惑 人们会认为虚拟机扔了它。考虑使用 而是一个IllegalArgumentException;这将被清楚地看作是一个 程序员发起的异常。
但是,我一直认为为null参数抛出空指针异常是正确的。我在ArrayList的实现中寻找例子,我可以找到类似的东西:
public boolean tryAdvance(Consumer<? super E> action) {
if (action == null)
throw new NullPointerException();
那么,这真的不对吗?为什么?为什么Findbug告诉我这是错的?