Tôi đang cố gắng sử dụng phản ánh để xác định xem một trôi qua trong lớp thực hiện một giao diện IsWdidget
:Làm thế nào để xác định xem một lớp Java thực hiện một giao diện đặc biệt
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;
}
Đây có phải là/cách effecient nhất tốt nhất xác định điều này? Tôi cũng thấy một IsWidget.class.isAssignableFrom(Class<?>)
phương pháp ...
Tính năng này hoạt động nhưng thực sự lạm dụng điểm sử dụng khối thử/nắm bắt. Cộng với ngoại lệ được ném sẽ làm cho cuộc gọi đắt hơn nó phải là (mặc dù tôi không chắc chắn sẽ hiệu quả hơn khi sử dụng sự phản chiếu để xác định giao diện thực hiện) –