Esto probablemente se haya preguntado antes, pero una búsqueda rápida solo generó la misma pregunta para C#. See here.Prueba si el objeto implementa la interfaz
Lo que básicamente quiero hacer es comprobar si un objeto determinado implementa una interfaz determinada.
Creo que encontré una solución, pero esto no es lo suficientemente cómodo para usarla con frecuencia en los enunciados de caso o de caso y me preguntaba si Java no tiene una solución incorporada.
public static Boolean implementsInterface(Object object, Class interf){
for (Class c : object.getClass().getInterfaces()) {
if (c.equals(interf)) {
return true;
}
}
return false;
}
EDIT: Ok, gracias por sus respuestas. Especialmente para Damien Pollet y Noldorin, me hiciste replantear mi diseño, así que ya no pruebo las interfaces.
¿No puedes tratar de fundición y detectar la excepción si uno se lanza (o comprobar si hay ¿un resultado nulo incluso, si Java tiene algo análogo al operador C# "como")? Soy codificador de C# en lugar de Java, así que solo estoy adivinando aquí, aunque creo que tal enfoque sería posible en cualquier lenguaje OO. – Noldorin
yay! de nada :) –
La excepción de tirar es una buena práctica en este caso solo si no tiene que preocuparse por el rendimiento. – Rafa