Prawdopodobnie zostało to wcześniej zadane, ale szybkie wyszukiwanie wywoływało tylko to samo pytanie, które zadano dla C#. See here.Sprawdź, czy obiekt implementuje interfejs
Co zasadniczo chcę zrobić, to sprawdzić, czy dany obiekt implementuje dany interfejs.
W pewnym sensie znalazłem rozwiązanie, ale nie jest to po prostu wystarczająco wygodne, aby często go używać w instrukcjach if i case i zastanawiałem się, czy Java nie ma wbudowanego rozwiązania.
public static Boolean implementsInterface(Object object, Class interf){
for (Class c : object.getClass().getInterfaces()) {
if (c.equals(interf)) {
return true;
}
}
return false;
}
EDIT: Ok, dzięki za odpowiedzi. Zwłaszcza dla Damiena Polleta i Noldorina, zmusiłeś mnie do przemyślenia mojego projektu, więc nie testuję już interfejsów.
Nie możesz po prostu spróbować odlewania i złapać wyjątek, jeśli ktoś jest wyrzucany (lub sprawdzić wynik zerowy nawet, jeśli Java ma coś analagicznego do operatora C# "as")? Jestem programistą C#, a nie Java, więc domyślam się, że takie podejście byłoby możliwe w każdym języku OO. – Noldorin
yay! serdecznie zapraszamy :) –
Wyjątek wyrzucania jest dobrą praktyką w tym przypadku, tylko jeśli nie musisz przejmować się wydajnością. – Rafa