In order to support fields of the same name in subclasses we are now prefixing them with name of the class that defines them. To provide convenient way to access them from generated bytecode and also directly from JavaScript, there is a getter/setter function for each field. It starts with _ followed by the field name. If called with a parameter, it sets the field, with a parameter it just returns it.
2 * Copyright (c) 1994, 2006, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
29 * The Boolean class wraps a value of the primitive type
30 * {@code boolean} in an object. An object of type
31 * {@code Boolean} contains a single field whose type is
34 * In addition, this class provides many methods for
35 * converting a {@code boolean} to a {@code String} and a
36 * {@code String} to a {@code boolean}, as well as other
37 * constants and methods useful when dealing with a
40 * @author Arthur van Hoff
43 public final class Boolean implements java.io.Serializable,
47 * The {@code Boolean} object corresponding to the primitive
50 public static final Boolean TRUE = new Boolean(true);
53 * The {@code Boolean} object corresponding to the primitive
54 * value {@code false}.
56 public static final Boolean FALSE = new Boolean(false);
59 * The Class object representing the primitive type boolean.
63 public static final Class<Boolean> TYPE = Class.getPrimitiveClass("boolean");
66 * The value of the Boolean.
70 private final boolean value;
72 /** use serialVersionUID from JDK 1.0.2 for interoperability */
73 private static final long serialVersionUID = -3665804199014368530L;
76 * Allocates a {@code Boolean} object representing the
77 * {@code value} argument.
79 * <p><b>Note: It is rarely appropriate to use this constructor.
80 * Unless a <i>new</i> instance is required, the static factory
81 * {@link #valueOf(boolean)} is generally a better choice. It is
82 * likely to yield significantly better space and time performance.</b>
84 * @param value the value of the {@code Boolean}.
86 public Boolean(boolean value) {
91 * Allocates a {@code Boolean} object representing the value
92 * {@code true} if the string argument is not {@code null}
93 * and is equal, ignoring case, to the string {@code "true"}.
94 * Otherwise, allocate a {@code Boolean} object representing the
95 * value {@code false}. Examples:<p>
96 * {@code new Boolean("True")} produces a {@code Boolean} object
97 * that represents {@code true}.<br>
98 * {@code new Boolean("yes")} produces a {@code Boolean} object
99 * that represents {@code false}.
101 * @param s the string to be converted to a {@code Boolean}.
103 public Boolean(String s) {
108 * Parses the string argument as a boolean. The {@code boolean}
109 * returned represents the value {@code true} if the string argument
110 * is not {@code null} and is equal, ignoring case, to the string
111 * {@code "true"}. <p>
112 * Example: {@code Boolean.parseBoolean("True")} returns {@code true}.<br>
113 * Example: {@code Boolean.parseBoolean("yes")} returns {@code false}.
115 * @param s the {@code String} containing the boolean
116 * representation to be parsed
117 * @return the boolean represented by the string argument
120 public static boolean parseBoolean(String s) {
125 * Returns the value of this {@code Boolean} object as a boolean
128 * @return the primitive {@code boolean} value of this object.
130 public boolean booleanValue() {
135 * Returns a {@code Boolean} instance representing the specified
136 * {@code boolean} value. If the specified {@code boolean} value
137 * is {@code true}, this method returns {@code Boolean.TRUE};
138 * if it is {@code false}, this method returns {@code Boolean.FALSE}.
139 * If a new {@code Boolean} instance is not required, this method
140 * should generally be used in preference to the constructor
141 * {@link #Boolean(boolean)}, as this method is likely to yield
142 * significantly better space and time performance.
144 * @param b a boolean value.
145 * @return a {@code Boolean} instance representing {@code b}.
148 public static Boolean valueOf(boolean b) {
149 return (b ? TRUE : FALSE);
153 * Returns a {@code Boolean} with a value represented by the
154 * specified string. The {@code Boolean} returned represents a
155 * true value if the string argument is not {@code null}
156 * and is equal, ignoring case, to the string {@code "true"}.
159 * @return the {@code Boolean} value represented by the string.
161 public static Boolean valueOf(String s) {
162 return toBoolean(s) ? TRUE : FALSE;
166 * Returns a {@code String} object representing the specified
167 * boolean. If the specified boolean is {@code true}, then
168 * the string {@code "true"} will be returned, otherwise the
169 * string {@code "false"} will be returned.
171 * @param b the boolean to be converted
172 * @return the string representation of the specified {@code boolean}
175 public static String toString(boolean b) {
176 return b ? "true" : "false";
180 * Returns a {@code String} object representing this Boolean's
181 * value. If this object represents the value {@code true},
182 * a string equal to {@code "true"} is returned. Otherwise, a
183 * string equal to {@code "false"} is returned.
185 * @return a string representation of this object.
187 public String toString() {
188 return value ? "true" : "false";
192 * Returns a hash code for this {@code Boolean} object.
194 * @return the integer {@code 1231} if this object represents
195 * {@code true}; returns the integer {@code 1237} if this
196 * object represents {@code false}.
198 public int hashCode() {
199 return value ? 1231 : 1237;
203 * Returns {@code true} if and only if the argument is not
204 * {@code null} and is a {@code Boolean} object that
205 * represents the same {@code boolean} value as this object.
207 * @param obj the object to compare with.
208 * @return {@code true} if the Boolean objects represent the
209 * same value; {@code false} otherwise.
211 public boolean equals(Object obj) {
212 if (obj instanceof Boolean) {
213 return value == ((Boolean)obj).booleanValue();
219 * Returns {@code true} if and only if the system property
220 * named by the argument exists and is equal to the string
221 * {@code "true"}. (Beginning with version 1.0.2 of the
222 * Java<small><sup>TM</sup></small> platform, the test of
223 * this string is case insensitive.) A system property is accessible
224 * through {@code getProperty}, a method defined by the
225 * {@code System} class.
227 * If there is no property with the specified name, or if the specified
228 * name is empty or null, then {@code false} is returned.
230 * @param name the system property name.
231 * @return the {@code boolean} value of the system property.
232 * @see java.lang.System#getProperty(java.lang.String)
233 * @see java.lang.System#getProperty(java.lang.String, java.lang.String)
235 public static boolean getBoolean(String name) {
236 boolean result = false;
238 result = toBoolean(AbstractStringBuilder.getProperty(name));
239 } catch (IllegalArgumentException e) {
240 } catch (NullPointerException e) {
246 * Compares this {@code Boolean} instance with another.
248 * @param b the {@code Boolean} instance to be compared
249 * @return zero if this object represents the same boolean value as the
250 * argument; a positive value if this object represents true
251 * and the argument represents false; and a negative value if
252 * this object represents false and the argument represents true
253 * @throws NullPointerException if the argument is {@code null}
257 public int compareTo(Boolean b) {
258 return compare(this.value, b.value);
262 * Compares two {@code boolean} values.
263 * The value returned is identical to what would be returned by:
265 * Boolean.valueOf(x).compareTo(Boolean.valueOf(y))
268 * @param x the first {@code boolean} to compare
269 * @param y the second {@code boolean} to compare
270 * @return the value {@code 0} if {@code x == y};
271 * a value less than {@code 0} if {@code !x && y}; and
272 * a value greater than {@code 0} if {@code x && !y}
275 public static int compare(boolean x, boolean y) {
276 return (x == y) ? 0 : (x ? 1 : -1);
279 private static boolean toBoolean(String name) {
280 return ((name != null) && name.equalsIgnoreCase("true"));