Điều này có thể đã được hỏi trước đó, nhưng tìm kiếm nhanh chỉ đưa ra cùng một câu hỏi được yêu cầu cho C#. See here.Kiểm tra xem đối tượng có thực hiện giao diện
Điều cơ bản tôi muốn làm là kiểm tra thời tiết một đối tượng cụ thể thực hiện một giao diện nhất định.
Tôi đã tìm ra giải pháp nhưng điều này không đủ thoải mái để sử dụng nó thường xuyên trong các câu lệnh if hoặc case và tôi đã tự hỏi rằng Java không có giải pháp tích hợp.
public static Boolean implementsInterface(Object object, Class interf){
for (Class c : object.getClass().getInterfaces()) {
if (c.equals(interf)) {
return true;
}
}
return false;
}
EDIT: Ok, cảm ơn câu trả lời của bạn. Đặc biệt là Damien Pollet và Noldorin, bạn đã làm cho tôi suy nghĩ lại về thiết kế của mình vì vậy tôi không kiểm tra giao diện nữa.
thể bạn không chỉ cần cố gắng đúc và bắt ngoại lệ nếu một được ném (hoặc kiểm tra một kết quả null thậm chí, nếu Java có bất cứ điều gì analagous đến C# "như" nhà điều hành)? Tôi là một coder C# chứ không phải là một Java, vì vậy tôi chủ yếu chỉ đoán ở đây, mặc dù tôi sẽ nghĩ rằng một cách tiếp cận như vậy sẽ có thể trong bất kỳ ngôn ngữ OO. – Noldorin
yay! bạn được chào đón :) –
Trường hợp ngoại lệ ném là thực tiễn tốt trong trường hợp này chỉ khi bạn không phải quan tâm đến hiệu suất. – Rafa