首先,对这个非常基本的问题表示歉意。我对 stackoverflow 还很陌生,但我对此感到摸不着头脑,希望得到一些启发。好吧,今天在工作中,我和我同事的代码经过了同行评审,并被告知要替换它。Boolean isOpen;*some processing that involves altering the value of isOpen*if (!isOpen){...}有了这个..if (Objects.equals(Boolean.FALSE, isOpen)){...}我知道这两种实现都是正确的并且产生相同的结果。我也知道使用对象包装器的后果Boolean。我不明白在这种情况下使用 NOT 运算符和 Objects.equals() 之间的区别。我知道在运行时isOpen将会被拆箱。两者都仍然容易受到a的影响NullPointerException,那么有什么区别呢?它有点超越了逻辑运算符的目的。
2 回答
杨魅力
TA贡献1811条经验 获得超6个赞
8.9.2. 枚举体声明
在枚举声明中,没有访问修饰符的构造函数声明是私有的。
除了你需要多写一个单词之外,这没有任何区别。
我看到开发人员将private
其变得更加明确(以强调不能在枚举之外使用枚举构造函数的事实)。我觉得没有必要。
如果我不写
private
枚举的构造函数,它会使其默认吗?
如果你说的“默认”是指private
,是的。
如果“默认”是指package-private,则不是。既不被允许,public
也protected
不被允许。枚举构造函数始终是private
.
8.9.2. 枚举体声明
如果枚举声明中的构造函数声明是公共的或受保护的(第 6.6 节),则会出现编译时错误。
jeck猫
TA贡献1909条经验 获得超7个赞
枚举构造函数只能是私有构造函数。
在枚举声明中,没有访问修饰符的构造函数声明是私有的。
...
如果枚举声明中的构造函数声明是公共的或受保护的,则会出现编译时错误。
没有理由让它成为私有的:您无法手动创建枚举的新实例(这有点是枚举的要点)。
如果您想要可以创建实例的东西,请使用常规类。
添加回答
举报
0/150
提交
取消