最佳答案
在“高效 Java,第二版”一书的第2项中,有一段代码,作者希望禁止对象的空初始化。
class Example {
private Example() {
throw new AssertionError();
}
}
抛出异常的类型,是这里让我感到困惑的地方。
我不明白,如果 AssertionError
被抛出只是因为没有更适合的错误或因为它应该是这样。
据我所知,这个错误是由框架在 assert
语句失败时抛出的。而且,在 javadoc 中它只是编写
[抛出 AssertionError ]表示断言失败。
但是我没有看到任何断言(真假陈述)在这里被违反。
当然,“ You shall not instance ate an item Of this class”语句被违反了,但是如果这是其背后的逻辑,那么我们都应该到处抛出 AssertionError
,而这显然不会发生。
FWIW,我刚刚扔了一个
new IllegalStateException("Must not instantiate an element of this class")
有什么问题吗? 在哪种情况下,我应该抛出一个 AssertionError
在我自己的代码?
对不起,如果这只是一个微妙的怀疑,但我使用这种模式在我的代码很多,我想确保我正在做正确的事情。