Categorías destacadas
programacion php    
Artículo
20
¡votar!

 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.

Publicado por:
Administrador
Recomendar
a un amigo
Compartir
en redes
 
Comentarios
 
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Copyright © 1998-2011 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon