Java – Comparación de clases?
¿Cómo puedo comparar 2 clases?
La sentencia if siguiente nunca pasa aunque class es el tipo de MyClass:
- ¿Dónde deberíamos invocar setPin () para el emparejamiento de bluetooth en android?
- Cómo reemplazar la etiqueta <br \ />
- Respetando el bloqueo de rotación en android
- Estudio de Android java.lang.NoClassDefFoundError: android.support.v4.app.NavUtilsJB
- Descargar html source android?
public void(Class class) { if (class == MyClass.class){ } }
- Android: Mi aplicación se bloquea cuando hay un campo de edición de texto en blanco
- Cómo ajustar la sensibilidad del micrófono mientras graba audio en android
- Conversión de mapa de bits Java a matriz de bytes
- Eclipse ADT 22.6.2 todavía da el error "java.lang.NullPointerException"
- Java.lang.IllegalStateException: Orca SharedPreferences utilizado antes de inicializado
- ¿Cómo puedo usar Proguard en Eclipse para proyectos Java NO-Android?
- Cómo hacer que flatMap se ejecute en un subproceso de fondo
- Cambiar el ícono del botón Drawable de Android mediante programación
if (clazz.equals(MyClass.class)) { }
BTW, la clase es una palabra reservada.
Para probar si clazz
es un (sub) tipo de MyClass
MyClass.class.isAssignableFrom(clazz)
Desde el javadoc para Class.isAssignableFrom
Determina si la clase o interfaz representada por este objeto de clase es igual o es una superclase o superinterfaz de la clase o interfaz representada por el parámetro de clase especificado. Devuelve verdadero si es así; De lo contrario devuelve false. Si este objeto Class representa un tipo primitivo, este método devuelve true si el parámetro Class especificado es exactamente este objeto Class; De lo contrario devuelve false.
Específicamente, este método prueba si el tipo representado por el parámetro de clase especificado se puede convertir al tipo representado por este objeto de clase a través de una conversión de identidad o mediante una conversión de referencia de ampliación. Consulte las especificaciones de lenguaje Java, secciones 5.1.1 y 5.1.4, para obtener más detalles.
Asi que
Object.class.isAssignableFrom(String.class)
Es verdadero porque cada String
es también un Object
pero
String.class.isAssignableFrom(Object.class)
Es falso porque no todos los Object
son String
s.
El nombre " isAssignableFrom
" proviene del hecho de que,
Class1 x = (Class2) null;
Sólo es legal cuando
Class1.class.isAssignableFrom(Class2.class)
Es decir, podemos asignar un campo o variable con tipo estático Class1
un valor que viene de una expresión cuyo tipo estático es Class2
.
Puede utilizar ==
o .equals()
para comparar objetos de Class
.
Ejemplo:
class MyClass { public static void main (String[] args) throws java.lang.Exception { MyClass m = new MyClass(); if (MyClass.class == m.getClass()) { System.out.println("it worked"); } } }
Demo: http://ideone.com/AwbNT
Puede utilizar el operador instanceof
para comprobar si una instancia pertenece a una clase específica oa sus subclases.
class MyClass{} class SubClass extends MyClass{} public static void main(String args[]) { SubClass object = new SubClass(); if (object instanceof MyClass) { System.out.println("It works, too"); } }
- ¿Cómo abrir un sitio web cuando se hace clic en un botón en la aplicación de Android?
- Cómo liberar un componente en Android / iOS