Rob*_*ska 27 java coding-style throwable
Effective Java(第二版),第4项,讨论使用私有构造函数来强制执行非实例化.这是本书中的代码示例:
public final class UtilityClass {
private UtilityClass() {
throw new AssertionError();
}
}
Run Code Online (Sandbox Code Playgroud)
然而,AssertionError
似乎不是正确的抛出.没有任何东西被"断言",这就是API如何定义AssertionError的使用.
Throwable
在这种情况下,通常会有不同的情况吗?通常只会抛出一个Exception
带有消息的将军吗?或者为此编写自定义是否常见Exception
?
这是非常微不足道的,但我认为从形式和标准的角度来看,我只是对它感到好奇.
Chr*_*ung 31
有一个断言:"我断言这个构造函数永远不会被调用".的确,AssertionError
这里确实是正确的.
Cra*_*lin 11
我喜欢包括Bloch的评论:
// Suppress default constructor for noninstantiability
Run Code Online (Sandbox Code Playgroud)
或者更好,但把它放在错误中:
private UtilityClass()
{
throw new AssertionError("Suppress default constructor for noninstantiability");
}
Run Code Online (Sandbox Code Playgroud)
UnsupportedOperationException听起来是最合适的,尽管检查异常会更好,因为它可能会警告某人在编译时错误地实例化类。
归档时间: |
|
查看次数: |
6096 次 |
最近记录: |