Programación en castellano
Inicio > Tutoriales > J2SE > Introducción a Java
-Tutoriales

Introducción a Java


Identificación de objetos

En ocasiones puede ser necesario identificar en tiempo de ejecución el tipo de objeto con el que estamos tratando. Debido a las capacidades de polimorfismo de Java, cuando tenemos una referencia a un objeto puede que sólo sepamos que dicho objeto es una instancia de una clase o de cualquiera de sus derivadas. Y en ocasiones puede ser necesario saber de qué clase específica es dicho objeto.

. Clase Class

Las instancias de Class contienen información sobre cada una de las clases (ojo: clases, no instancias) de nuestro programa. Al ejecutarse un programa, la máquina virtual de Java crea una instancia de Class por cada clase que vayamos a utilizar, por lo que no tendremos nunca que inicializar una. En ese cas

Class Class.forName(String)
Devuelve la instancia de Class correspondiente al objeto cuyo nombre coincide con la etiqueta pasada como parámetro.
String c.getName()
Siendo c una instancia de Class, devuelve el nombre de la clase que representa. Es la inversa del anterior.

Gracias al método getClass() que posee Object (y, por tanto, todos sus descendientes), podremos obtener el tipo de una referencia y por tanto, su nombre. Este método es útil para comprobar si dos referencias son del mismo tipo.

. Operador instanceof

Hay otra manera de lo más sencilla de identificar el tipo de un objeto:

Identificacion.java
public class Identificacion {
  public static void main(String[] args) {
    Object o = new String("Hola");
    if (o instanceof String)
      System.out.println("Es una cadena")
    else
      System.out.println("No es una cadena");
  }
}

Veremos que nos dice que, efectivamente, es una cadena. Si inicializaramos o a cualquier cosa que no fuera una cadena nos diría que no lo es. ¿Que no me creéis? Pues haced la prueba, haced la prueba.

Como se puede ver fácilmente, este segundo método es mucho más sencillo y es el que usaremos habitualmente. ¿Y para qué el primero? Bueno, es posible que en ocasiones necesitemos saber si existe una determinada clase que no pertenece a la librería estándar y puede, por tanto, no existir, por lo que no podríamos emplear instanceof.

 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados