答案 0 :(得分:3)
我认为没有特别的理由。这是非常糟糕的做法,IMO。 Boolean.TRUE和Boolean.FALSE做你需要的一切。
答案 1 :(得分:1)
如今,通过自动装箱,您可以编写true
,如果需要new Boolean(true)
对象(而不是Boolean
原语),它将自动转换为boolean
。
但是,在Java 1.4及更早版本中,这是不可能的;一个人必须明确地创建Boolean
对象。您链接的教程是2003年,当时还没有发布Java 5.0(a.k.a. Java 1.5)。
但即便如此,正如Malaxeur所说,使用Boolean.TRUE
会更好。
答案 2 :(得分:0)
这实际上非常奇怪,因为布尔的Javadoc明确表明它通常不是一个好主意http://java.sun.com/javase/6/docs/api/java/lang/Boolean.html。也许这个教程有点老了?
构造函数详细信息布尔
public Boolean(boolean value)
Allocates a Boolean object representing the value argument. Note: It is rarely appropriate to use this constructor. Unless a new
实例是必需的,静态的 factory valueOf(boolean)一般 一个更好的选择。它可能会屈服 明显更好的空间和时间 性能
Parameters: value - the value of the Boolean
答案 3 :(得分:0)
大多数情况下,当您需要布尔对象时,您需要引用类型的功能。方法可能需要一个对象,因此您传递一个布尔值。但可能最重要的是布尔值可以为null以及true和false。假设您有一个布尔事务成功的银行,如果是,则为true,否则为false。但如果交易没有发生怎么办?您可以将其设置为false,但由于它不能准确描述数据,因此会令人困惑。
这种情况下布尔值派上用场,但绝对不意味着它总是正确的选择。 :d
答案 4 :(得分:0)
从技术上讲,正如Malaxeur和Thomas所说,不应该使用Boolean(boolean value)
构造函数,而是使用Boolean.TRUE
和Boolean.FALSE
。自版本1.4.2以来,甚至在JavaDoc中都记录了这一点,尽管Boolean.TRUE
和Boolean.FALSE
对象与jdk 1.0.1一样旧
我不相信,JAXB需要属性值的唯一实例。如果这种情况不太可能发生,则会明确警告不使用Boolean.TRUE
。
我看到的唯一原因是:这是一个教程,代码在可读性方面得到了改进。如果显示“new Boolean(true)
”,则很明显,创建了一个新的布尔实例。从技术上说,“Boolean.TRUE
”可以是任何类型的,因此乍一看并不清楚,此方法中需要一个布尔对象。