Saltar al contenido

Cómo identificar tipos de objetos en Java

Te damos la bienvenida a nuestro sitio web, en este sitio vas a encontrar la resolución que buscas.

Solución:

olvidaste el .class:

if (value.getClass() == Integer.class) 
    System.out.println("This is an Integer");
 
else if (value.getClass() == String.class) 
    System.out.println("This is a String");

else if (value.getClass() == Float.class) 
    System.out.println("This is a Float");

Tenga en cuenta que este tipo de código suele ser el signo de un diseño OO deficiente.

También tenga en cuenta que comparar la clase de un objeto con una clase y usar instanceof no es lo mismo. Por ejemplo:

"foo".getClass() == Object.class

es falsemientras

"foo" instanceof Object

es true.

El uso de uno u otro depende de sus requisitos.

Puede comparar tokens de clase entre sí, por lo que podría usar value.getClass() == Integer.class. Sin embargo, la forma más simple y canónica es usar instanceof :

    if (value instanceof Integer) 
        System.out.println("This is an Integer");
     else if(value instanceof String) 
        System.out.println("This is a String");
     else if(value instanceof Float) 
        System.out.println("This is a Float");
    

Notas:

  • la única diferencia entre los dos es que la comparación de tokens de clase detecta solo coincidencias exactas, mientras que instanceof C coincidencias para subclases de C también. Sin embargo, en este caso todas las clases listadas son final, por lo que no tienen subclases. De este modo instanceof probablemente esté bien aquí.
  • como dijo JB Nizet, tales cheques no son diseño OO. Es posible que pueda resolver este problema de una manera más OO, por ejemplo

    System.out.println("This is a(n) " + value.getClass().getSimpleName());
    

Usted quiere instanceof:

if (value instanceof Integer)

Esto será true incluso para subclases, que suele ser lo que quieres, y también es null-seguro. Si realmente necesita exactamente la misma clase, podría hacerlo

if (value.getClass() == Integer.class)

o

if (Integer.class.equals(value.getClass())

Tienes la posibilidad mostrar este enunciado si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *