tôi rất bối rối ...không thể cast để giao diện thực hiện
Tôi có một lớp học mà trực tiếp thực hiện một giao diện:
public class Device implements AutocompleteResult
{...}
Đây là bằng chứng cho thấy tôi đang nhìn vào bên phải biến:
Object match = ...;
log.debug(match.getClass()); // Outputs 'Device'
log.debug(match.getClass().getInterfaces()[0]); // Outputs 'AutocompleteResult'
Tuy nhiên, khi tôi cố gắng đúc một thể hiện của lớp để giao diện:
AutocompleteResult result = (AutocompleteResult) match;
Tôi nhận được một ClassCastException!
ClassCastException: Device cannot be cast to AutocompleteResult
Ngoài ra, isAssignableFrom
lợi nhuận sai và tôi không chắc chắn lý do tại sao:
log.debug(AutocompleteResult.class.isAssignableFrom(Device.class));
từ doc:
Xác định nếu lớp hoặc giao diện đại diện bởi lớp này đối tượng là hoặc giống hoặc là siêu lớp hoặc superinterf ace, lớp hoặc giao diện được đại diện bởi tham số Lớp được chỉ định.
Tôi không phải lúc nào cũng có thể truyền một đối tượng đến giao diện mà lớp của nó triển khai?
Cảm ơn.
Có, bạn nên! (và bạn thậm chí không cần diễn viên rõ ràng.) Vui lòng đăng một số mã ví dụ độc lập thể hiện sự cố. –