代码之家  ›  专栏  ›  技术社区  ›  geejay

为什么Java教程显式地构造布尔值?

  •  1
  • geejay  · 技术社区  · 15 年前

    例如,

    marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
       new Boolean(true));
    

    JAXB Tutorial

    5 回复  |  直到 15 年前
        1
  •  3
  •   Malaxeur    15 年前

    我不认为有什么特别的原因。我认为这是非常糟糕的做法。布尔。真和布尔。假做你需要的一切。

        2
  •  1
  •   Thomas    15 年前

    true 它将自动转换为 new Boolean(true) 如果 Boolean boolean 原语)是预期的。

    然而,在Java1.4和更早版本中,这是不可能的;一个人必须创造 布尔值 对象。您链接到的教程是2003年的,当时Java5.0(又称Java1.5)还没有发布。

    但即便如此,正如Malaxeur指出的那样,使用它也会更好 Boolean.TRUE

        3
  •  0
  •   Falaina    15 年前

    这实际上非常奇怪,因为Javadocs for boolean明确表示这通常不是一个好主意 http://java.sun.com/javase/6/docs/api/java/lang/Boolean.html

    构造函数细节布尔值

    公共布尔值(布尔值)

    Allocates a Boolean object representing the value argument.
    
    Note: It is rarely appropriate to use this constructor. Unless a new
    

    出厂值(布尔值)通常为 明显更好的空间和时间 演出

    Parameters:
        value - the value of the Boolean
    
        4
  •  0
  •   Gordon Gustafson    15 年前

    大多数时候,当您想要布尔对象时,您需要引用类型的功能。方法可能需要一个对象,因此传递一个布尔值。但最重要的可能是布尔值可以是null,也可以是true和false。假设您有一家银行的布尔交易成功,如果成功,则为true,否则为false。但是如果交易还没有发生呢?您可以将其设置为false,但这会造成混淆,因为它不能准确地描述数据。

    在这种情况下,布尔值很方便,但这并不意味着它总是正确的选择D

        5
  •  0
  •   Andreas Dolk    15 年前

    从技术上讲,正如马拉克瑟和托马斯所主张的那样,人们不应该使用 Boolean(boolean value) Boolean.TRUE Boolean.FALSE 相反尽管 布尔。真 对象与JDK1.0.1一样古老

    使用 布尔。真 .

    new Boolean(true) “很明显,创建了一个新的布尔实例。” 布尔。真