Tôi nghĩ rằng chính thức documentation mang đến cho bạn câu trả lời cho cái này (mặc dù theo một cách khá đặc hiệu):
Phương pháp này là tương đương với năng động của ngôn ngữ Java instanceof điều hành.
Tôi lấy điều đó có nghĩa là isInstance()
chủ yếu được dùng để sử dụng trong mã giao dịch với kiểu phản chiếu lúc chạy. Đặc biệt, tôi sẽ nói rằng nó tồn tại để xử lý các trường hợp mà bạn có thể không biết trước các loại (s) của lớp học mà bạn muốn kiểm tra thành viên trước (hiếm khi những trường hợp có lẽ là).
Ví dụ, bạn có thể sử dụng nó để viết một phương pháp để kiểm tra để xem nếu hai đối tượng tùy tiện đánh máy là nhiệm vụ tương thích, như:
public boolean areObjectsAssignable(Object left, Object right) {
return left.getClass().isInstance(right);
}
Nói chung, tôi muốn nói rằng việc sử dụng instanceof
nên ưa thích bất cứ khi nào bạn biết loại lớp bạn muốn kiểm tra trước. Trong những trường hợp rất hiếm khi bạn không sử dụng, thay vào đó hãy sử dụng isInstance()
.
Nếu bạn định đóng câu hỏi dưới dạng trùng lặp, ít nhất hãy trích dẫn câu hỏi trước đó. – user949300