¿Cómo puedo comparar 2 clases?Java - ¿Comparando clases?
La siguiente sentencia if no pasa nunca a pesar de clase es el tipo de MiClase:
public void(Class class) {
if (class == MyClass.class){
}
}
¿Cómo puedo comparar 2 clases?Java - ¿Comparando clases?
La siguiente sentencia if no pasa nunca a pesar de clase es el tipo de MiClase:
public void(Class class) {
if (class == MyClass.class){
}
}
if (clazz.equals(MyClass.class)) {
}
BTW, clase es una palabra reservada.
'klass' es también un nombre var común. – Soup
'final Class
Para probar si clazz
es un (sub) tipo de MyClass
hacer
MyClass.class.isAssignableFrom(clazz)
Desde el Javadoc para Class.isAssignableFrom
Determina si la clase o interfaz representada por este objeto de clase es el mismo que, 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 falso. Si este objeto de clase representa un tipo primitivo, este método devuelve verdadero si el parámetro de clase especificado es exactamente este objeto de clase; de lo contrario, devuelve falso.
Específicamente, este método prueba si el tipo representado por el parámetro Clase especificado se puede convertir al tipo representado por este objeto Clase a través de una conversión de identidad o mediante una conversión de referencia de ampliación. Consulte Especificación del lenguaje Java, secciones 5.1.1 y 5.1.4, para más detalles.
Así
Object.class.isAssignableFrom(String.class)
es cierto porque cada String
es también un Object
pero
String.class.isAssignableFrom(Object.class)
es falso porque no todos los Object
s son String
s.
El nombre "isAssignableFrom
" viene 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 usar ==
o .equals()
para comparar Class
objetos.
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");
}
}
}
Demostración: http://ideone.com/AwbNT
Puede utilizar instanceof
operador para comprobar si una instancia pertenece a una clase específica o 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");
}
}
Dudo que se compile en absoluto ... en cambio si solo es un seudocódigo, entonces no veo nada extraño. ¿Puedes pegar el código real? – Cristian