/* * @(#)Boolean.java 1.51 04/05/11 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package java.lang; /** * The Boolean class wraps a value of the primitive type * boolean in an object. An object of type * Boolean contains a single field whose type is * boolean. *

* In addition, this class provides many methods for * converting a boolean to a String and a * String to a boolean, as well as other * constants and methods useful when dealing with a * boolean. * * @author Arthur van Hoff * @version 1.51, 05/11/04 * @since JDK1.0 */ public final class Boolean implements java.io.Serializable, Comparable { /** * The Boolean object corresponding to the primitive * value true. */ public static final Boolean TRUE = new Boolean(true); /** * The Boolean object corresponding to the primitive * value false. */ public static final Boolean FALSE = new Boolean(false); /** * The Class object representing the primitive type boolean. * * @since JDK1.1 */ public static final Class TYPE = Class.getPrimitiveClass("boolean"); /** * The value of the Boolean. * * @serial */ private final boolean value; /** use serialVersionUID from JDK 1.0.2 for interoperability */ private static final long serialVersionUID = -3665804199014368530L; /** * Allocates a Boolean object representing the * value argument. * *

Note: It is rarely appropriate to use this constructor. * Unless a new instance is required, the static factory * {@link #valueOf(boolean)} is generally a better choice. It is * likely to yield significantly better space and time performance. * * @param value the value of the Boolean. */ public Boolean(boolean value) { this.value = value; } /** * Allocates a Boolean object representing the value * true if the string argument is not null * and is equal, ignoring case, to the string "true". * Otherwise, allocate a Boolean object representing the * value false. Examples:

* new Boolean("True") produces a Boolean object * that represents true.
* new Boolean("yes") produces a Boolean object * that represents false. * * @param s the string to be converted to a Boolean. */ public Boolean(String s) { this(toBoolean(s)); } /** * Parses the string argument as a boolean. The boolean * returned represents the value true if the string argument * is not null and is equal, ignoring case, to the string * "true". * * @param s the String containing the boolean * representation to be parsed * @return the boolean represented by the string argument * @since 1.5 */ public static boolean parseBoolean(String s) { return toBoolean(s); } /** * Returns the value of this Boolean object as a boolean * primitive. * * @return the primitive boolean value of this object. */ public boolean booleanValue() { return value; } /** * Returns a Boolean instance representing the specified * boolean value. If the specified boolean value * is true, this method returns Boolean.TRUE; * if it is false, this method returns Boolean.FALSE. * If a new Boolean instance is not required, this method * should generally be used in preference to the constructor * {@link #Boolean(boolean)}, as this method is likely to yield * significantly better space and time performance. * * @param b a boolean value. * @return a Boolean instance representing b. * @since 1.4 */ public static Boolean valueOf(boolean b) { return (b ? TRUE : FALSE); } /** * Returns a Boolean with a value represented by the * specified String. The Boolean returned represents the * value true if the string argument is not null * and is equal, ignoring case, to the string "true".

* Example: Boolean.valueOf("True") returns true.
* Example: Boolean.valueOf("yes") returns false. * * @param s a string. * @return the Boolean value represented by the string. */ public static Boolean valueOf(String s) { return toBoolean(s) ? TRUE : FALSE; } /** * Returns a String object representing the specified * boolean. If the specified boolean is true, then * the string "true" will be returned, otherwise the * string "false" will be returned. * * @param b the boolean to be converted * @return the string representation of the specified boolean * @since 1.4 */ public static String toString(boolean b) { return b ? "true" : "false"; } /** * Returns a String object representing this Boolean's * value. If this object represents the value true, * a string equal to "true" is returned. Otherwise, a * string equal to "false" is returned. * * @return a string representation of this object. */ public String toString() { return value ? "true" : "false"; } /** * Returns a hash code for this Boolean object. * * @return the integer 1231 if this object represents * true; returns the integer 1237 if this * object represents false. */ public int hashCode() { return value ? 1231 : 1237; } /** * Returns true if and only if the argument is not * null and is a Boolean object that * represents the same boolean value as this object. * * @param obj the object to compare with. * @return true if the Boolean objects represent the * same value; false otherwise. */ public boolean equals(Object obj) { if (obj instanceof Boolean) { return value == ((Boolean)obj).booleanValue(); } return false; } /** * Returns true if and only if the system property * named by the argument exists and is equal to the string * "true". (Beginning with version 1.0.2 of the * JavaTM platform, the test of * this string is case insensitive.) A system property is accessible * through getProperty, a method defined by the * System class. *

* If there is no property with the specified name, or if the specified * name is empty or null, then false is returned. * * @param name the system property name. * @return the boolean value of the system property. * @see java.lang.System#getProperty(java.lang.String) * @see java.lang.System#getProperty(java.lang.String, java.lang.String) */ public static boolean getBoolean(String name) { boolean result = false; try { result = toBoolean(System.getProperty(name)); } catch (IllegalArgumentException e) { } catch (NullPointerException e) { } return result; } /** * Compares this Boolean instance with another. * * @param b the Boolean instance to be compared * @return zero if this object represents the same boolean value as the * argument; a positive value if this object represents true * and the argument represents false; and a negative value if * this object represents false and the argument represents true * @throws NullPointerException if the argument is null * @see Comparable * @since 1.5 */ public int compareTo(Boolean b) { return (b.value == value ? 0 : (value ? 1 : -1)); } private static boolean toBoolean(String name) { return ((name != null) && name.equalsIgnoreCase("true")); } }