Está en la página 1de 4

Los valores boolean tambin tienen su tipo asociado Boolean , aunque en este caso hay menos mtodos

implementados que para el resto de las clases numricas.

Declaraciones

La primera sentencia crear una variable boolean y la segunda un objeto Boolean:

boolean b;
Boolean B;

Valores de Boolean

Boolean.TRUE;
Boolean.FALSE;

Mtodos de Boolean

boolean B.booleanValue();
String B.toString();
boolean B.equals( Object obj );

La clase Object, como ya se ha indicado anteriormente, es la clase raz de todo el rbol de la jerarqua de clases Java, y
proporciona un cierto nmero de mtodos de utilidad general que pueden utilizar todos los objetos. La lista completa se puede
ver en la documentacin del API de Java, aqu solamente se tratarn algunos de ellos; por ejemplo, Object proporciona:

Un mtodo por el que un objeto se puede comparar con otro objeto


Un mtodo para convertir un objeto a una cadena
Un mtodo para esperar a que ocurra una determinada condicin
Un mtodo para notificar a otros objetos que una condicin ha cambiado
Un mtodo para devolver la clase de un objeto

public boolean equals( Object obj );

Todas las clases que se definan en Java heredarn el mtodo equals(), que se puede utilizar para comparar dos objetos. Esta
comparacin no es la misma que proporciona el operador ==, que solamente compara si dos referencias a objetos apuntan al
mismo objeto.

El mtodo equals() se utiliza para saber si dos objetos separados son del mismo tipo y contienen los mismos datos. El mtodo
devuelve true si los objetos son iguales y false en caso contrario.

El sistema ya sabe de antemano cmo aplicar el mtodo a todas las clases estndar y a todos los objetos de los que el
compilador tiene conocimiento. Por ejemplo, se puede usar directamente para saber si dos objetos String son iguales.

Las subclases pueden sobreescribir el mtodo equals() para realizar la adecuada comparacin entre dos objetos de un tipo
que haya sido definido por el programador. En la aplicacin de ejemplo siguiente se sobreescribe el mtodo para comparar
dos objetos de la nueva clase que crea la aplicacin.

Hay que observar que en la lista de argumentos del mtodo equals() hay que pasarle un argumento de tipo Object. Si se
define un mtodo con un argumento de tipo diferente, se estar sobrecargando el mtodo, no sobreescribindolo.

Clase Boolean
En el ejemplo, una vez que se ejecuta, es necesario hacer un moldeo del argumento al tipo de la clase antes de intentar
realizar la comparacin. Se utiliza el operador instanceof para confirmar que el objeto es del tipo correcto. Uno de los
objetos proporcionados para comprobar su equivalencia es de tipo errneo (String) y el mtodo sobreescrito equals()
indicar que no es un objeto equivalente.

class java511 {
int miDato;

// Constructor parametrizado
java511( int dato ) {
miDato = dato;
}

public static void main(String args[] ) {


// Se instancian los objetos que se van a testear
java511 obj1 = new java511( 2 );
java511 obj2 = new java511( 2 );
java511 obj3 = new java511( 3 );
String obj4 = "Un objeto String";

// Se realizan las comprobaciones y se presenta por pantalla


// el resultado de cada una de ellas
System.out.println( "obj1 equals obj1: " +
obj1.equals( obj1 ) );
System.out.println( "obj1 equals obj2: " +
obj1.equals( obj2 ) );
System.out.println( "obj1 equals obj3: " +
obj1.equals( obj3 ) );
System.out.println( "obj1 equals obj4: " +
obj1.equals( obj4 ) );
}

// Se sobreescribe el metodo equals()


public boolean equals( Object arg ) {
// Se comprueba que el argumento es del tipo adecuado y
// que no es nulo. Si lo anterior se cumple se realiza
// la comprobacion de equivalencia de los datos.
// Observese que se ha empleado el operador instanceof
if( (arg != null) && (arg instanceof java511) ) {
// Hacemos un moldeado del Object general a tipo java511
java511 temp = (java511)arg;

// Se realiza la comparacion y se devuelve el resultado


return( this.miDato == temp.miDato );
}
else {
// No es del tipo esperado
return( false );
}
}
}

public final native Class getClass();

En Java existe la clase Class, que se define de la forma (la declaracin no est completa, consultar el API de Java para ello):

public final class java.lang.Class extends java.lang.Object {


// Mtodos
public static Class forName(String className);
public ClassLoader getClassLoader();
public Class[] getClasses();
public Class getComponentType();
public Constructor getConstructor(Class[] parameterTypes);
public Constructor[] getConstructors();
public Class[] getDeclaredClasses();
public Constructor[] getDeclaredConstructors();

Clase Boolean
public Field getDeclaredField(String name);
public Field[] getDeclaredFields();
public Method getDeclaredMethod(String name, Class[] parTypes);
public Method[] getDeclaredMethods();
public Class getDeclaringClass();
public Field getField(String name);
public Field[] getFields();
public Class[] getInterfaces();
public Method getMethod(String name, Class[] parameterTypes);
public Method[] getMethods();
public int getModifiers();
public String getName();
public URL getResource(String name);
public InputStream getResourceAsStream(String name);
public Object[] getSigners();
public Class getSuperclass();
public boolean isArray();
public boolean isAssignableFrom(Class cls);
public boolean isInstance(Object obj);
public boolean isInterface();
public boolean isPrimitive();
public Object newInstance();
public String toString(); // Overrides Object.toString()
}

Instancias de la clase Class representan las clases e interfaces que est ejecutando la aplicacin Java. No hay un constructor
para la clase Class, sus objetos son construidos automticamente por la Mquina Virtual Java (JVM) cuando las clases son
cargadas, o por llamadas al mtodo defineClass() del cargados de clases.

Es una clase importante porque se le pueden realizar peticiones de informacin sobre objetos, como cul es su nombre o
cmo se llama su superclase.

El mtodo getClass() de la clase Object se puede utilizar para determinar la clase de un objeto. Es decir, devuelve un objeto
de tipo Class, que contiene informacin importante sobre el objeto que crea la clase. Una vez determinada la clase del objeto,
se pueden utilizar los mtodos de la clase Class para obtener informacin acerca del objeto.

Adems, habiendo determinado la clase del objeto, el mtodo newInstance() de la clase Class puede invocarse para
instanciar otro objeto del mismo tipo. El resultado es que el operador new ser utilizado con un constructor de una clase
conocida.

Hay que hacer notar que la ltima afirmacin del prrafo anterior es una situacin que el compilador no conoce en tiempo de
compilacin, es decir, no sabe el tipo del objeto que va a ser instanciado. Por lo tanto, si se necesita referenciar al nuevo
objeto, es necesario declarar la variable de referencia del tipo genrico Object, aunque el objeto actual tomar todos los
atributos de la subclase actual por la que ser instanciado.

Hay que hacer notar que el mtodo getClass() es un mtodo final y no puede ser sobreescrito. Devuelve un objeto de tipo
Class que permite el uso de los mtodos definidos en la clase Class sobre ese objeto.

El siguiente programa, ilustra alguna de estas caractersticas. Primero, instancia un objeto, mira la clase de ese objeto y utiliza
alguno de los mtodos de la clase Class para obtener y presentar informacin acerca del objeto. Luego, pregunta al usuario si
quiere instanciar un nuevo objeto, instanciando un objeto de tipo String en un caso o, en el otro caso, se aplica el mtodo
getClass() a un objeto existente y utilizando el mtodo newInstance() se instancia un nuevo objeto del mismo tipo.

import java.io.*;

class java512 {

public static void main( String args[] ) {


java512 obj1 = new java512();
// Se usa el metodo getClass() de la clase Object y dos
// metodos de la clase Class para obtener y presentar
// informacion acerca del objeto
System.out.println( "Nombre de la clase de obj1: "
+ obj1.getClass().getName() );
System.out.println( "Nombre de la superclase de obj1: "
+ obj1.getClass().getSuperclass() );

// Ahora se instancia otro objeto basandose en la entrada


// del usuario, de forma que el compilador no tiene forma
// de conocer el tipo del objeto en tiempo de compilacion

Clase Boolean
// Se declara una referencia a un objeto generico
Object obj2 = null;

// Se pide la entrada al usuario


System.out.println( "Introduce un 0 o un 1" );
try {
// Captura la entrada del usuario
int dato = System.in.read();
// Si se ha introducido un 0
if( (char)dato == '0' )
// Se crea un objeto String
obj2 = "Esto es un objeto String";
// Sino, se crea un nuevo objeto del mismo tipo
// que el anterior
else
obj2 = obj1.getClass().newInstance();
} catch( Exception e ) {
System.out.println( "Excepcion " + e );
}

// Ahora se indican la clase y superclase del nuevo objeto


System.out.println( "Nombre de la clase de obj2: "
+ obj2.getClass().getName() );
System.out.println( "Nombre de la superclase de obj2: "
+ obj2.getClass().getSuperclass());
}
}

public String toString();

La clase Object dispone de este mtodo que puede usarse para convertir todos los objetos conocidos por el
compilador a algn tipo de representacin de cadena, que depender del objeto.

Por ejemplo, el mtodo toString() extrae el entero contenido en un objeto Integer. De forma similar, si se aplica el mtodo
toString() al objeto Thread, se puede obtener informacin importante acerca de los threads y presentarla como cadena.

Este mtodo tambin se puede sobreescribir, o redefinir, para convertir los objetos definidos por el programador a cadenas. El
programa siguiente, redefine el mtodo toString() de una clase recin definida para que pueda utilizarse en la conversin de
objetos de esta clase a cadenas.

class java513 {
// Se definen las variables de instancia para la clase
String uno;
String dos;
String tres;
// Constructor de la clase
java513( String a,String b,String c ) {
uno = a;
dos = b;
tres = c;
}

public static void main( String args[] ) {


// Se instancia un objeto de la clase
java513 obj = new java513( "Tutorial","de","Java" );

// Se presenta el objeto utilizando el metodo sobreescrito


System.out.println( obj.toString() );
}

// Sobreescritura del metodo toString() de la clase Object


public String toString() {
// Convierte un objeto a cadena y lo devuelve
return( uno+" "+dos+" "+tres );
}
}

Clase Boolean