Próbuję użyć refleksji do ustalenia, czy przekazywana w klasie realizuje IsWdidget
interfejs:Jak ustalić, czy klasa Java implementuje dany interfejs
public boolean isAWidget(Class<?> clzz) {
Class<?> runtimeClass = ClassLoader.getSystemClassLoader().loadClass(clzz.getName());
Class<?>[] impls = runtimeClass.getInterfaces();
for(Class<?> clz : impls)
if(clz.getName().equals(IsWidget.class.getName()))
return true;
return false;
}
Czy to jest najlepszy/najbardziej skuteczny sposób z określając to? Widzę też IsWidget.class.isAssignableFrom(Class<?>)
metoda ...
To działa, ale naprawdę nadużywa punktu użycia bloku try/catch. Dodatkowo wyrzucony wyjątek sprawi, że połączenie będzie droższe niż to konieczne (chociaż nie jestem pewien, o ile bardziej efektywne byłoby użycie refleksji do określenia interfejsu implementującego). –