当前位置:  开发笔记 > 编程语言 > 正文

在私有实用程序类构造函数中使用的首选Throwable是什么?

如何解决《在私有实用程序类构造函数中使用的首选Throwable是什么?》经验,为你挑选了2个好方法。

Effective Java(第二版),第4项,讨论使用私有构造函数来强制执行非实例化.这是本书中的代码示例:

public final class UtilityClass {
    private UtilityClass() {
        throw new AssertionError();
    }
}

然而,AssertionError似乎不是正确的抛出.没有任何东西被"断言",这就是API如何定义AssertionError的使用.

Throwable在这种情况下,通常会有不同的情况吗?通常只会抛出一个Exception带有消息的将军吗?或者为此编写自定义是否常见Exception

这是非常微不足道的,但我认为从形式和标准的角度来看,我只是对它感到好奇.



1> Chris Jester..:

有一个断言:"我断言这个构造函数永远不会被调用".的确,AssertionError这里确实是正确的.


不正确,请参阅javadoc:http://java.sun.com/j2se/1.4.2/docs/api/java/lang/AssertionError.html
你是对的,我是.这就是为什么它被称为"断言"声明.就像我不会使用NullPointerException来指示值为0而不是范围内的数字的名称,即使该数字是作为索引.

2> Craig P. Mot..:

我喜欢包括Bloch的评论:

// Suppress default constructor for noninstantiability

或者更好,但把它放在错误中:

private UtilityClass()
{
    throw new AssertionError("Suppress default constructor for noninstantiability");
}

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有