我已经看到了这个问题,但是关于assert
关键字的用法还有其他一些问题。我正在和其他一些编码员讨论使用assert
。对于此用例,有一种方法可以在满足某些先决条件的情况下返回null。我编写的代码调用该方法,然后断言它不会返回null,并继续使用返回的对象。
例:
class CustomObject {
private Object object;
@Nullable
public Object getObject() {
return (object == null) ? generateObject() : object;
}
}
现在想象一下我是这样使用它的:
public void useObject(CustomObject customObject) {
object = customObject.getObject();
assert object != null;
// Do stuff using object, which would throw a NPE if object is null.
}
有人告诉我应该删除assert
,不要在生产代码中使用它们,而只能在测试中使用。真的吗?
Objects.requireNonNull
Java 8 引入以来,该库不再需要)。
-ea
或等效方式显式启用它们。