我通常通过 Guava 的 Precondition 方法检查几乎所有的构造函数和公共方法参数。私有方法参数通常带有断言。但是,现在我正在考虑替换“内部”前提条件检查,即构造函数/工厂方法/通用方法(不是公共 API/应用程序 API 的一部分)中的检查......用断言,你怎么看? 也许这样会快一点,因为我有很多检查;-)
编辑:我的意思也是公共构造函数和工厂,它们不应该是公共 API 的一部分,只是在内部使用,例如:
/**
* Constructor with both, complete and modifying page.
*
* @param complete
* to be used as a base for this container
* @param modifying
* to be used as a base for this container
*/
public NodePageContainer(final @Nonnull NodePage complete,
final @Nonnull NodePage modifying) {
assert complete != null;
assert modifying != null;
mComplete = complete;
mModified = modifying;
}
在我拥有之前mComplete = checkNotNull(complete);
......但它只是从另一个包中的一个类中调用,甚至不应该是公共 API 的一部分。如果 Java 允许降低此类类的可见性,那就太好了;-)