Trong Java, instanceof là một toán tử so sánh để kiểm tra xem một đối tượng có phải là một instance của một lớp nào đó hay không. Nó trả về true nếu đối tượng là một instance của lớp và false nếu không.
Các bài viết liên quan:
Cú pháp của toán tử instanceof như sau:
object instanceof Class
Trong đó, object là đối tượng cần kiểm tra, và Class là lớp cần so sánh.
Ví dụ:
String str = "Hello"; if (str instanceof String) { System.out.println("str is an instance of String"); } else { System.out.println("str is NOT an instance of String"); }
trong đó str là một instance của String nên output là str is an instance of String
Chú ý instanceof không hoạt động với các primitive type như int, float, double,… mà chỉ hoạt động với các đối tượng (reference type)
instanceof là một cách tốt để xác định một đối tượng là một loại nào đó, đặc biệt là trong trường hợp sử dụng các lớp trừu tượng.
khi nào thì sử dung instanceof trong java
Trong Java, instanceof thường được sử dụng khi bạn cần xác định một đối tượng có phải là một instance của một lớp nào đó hay không, đặc biệt là khi đối tượng đó có thể là một instance của nhiều lớp khác nhau.
Ví dụ: Nếu bạn cần xác định một đối tượng là một sinh viên hay một giáo viên, bạn có thể sử dụng instanceof để kiểm tra xem đối tượng đó có phải là một instance của lớp SinhViên hoặc lớp GiáoViên.
instanceof còn được sử dụng khi sử dụng các lớp trừu tượng, ví dụ:
Animal animal = new Dog(); if(animal instanceof Dog) { // do something }
instanceof còn được sử dụng trong việc xử lý đa hình, ví dụ:
Shape shape = getShape(); if (shape instanceof Circle) { // do something } else if (shape instanceof Rectangle) { // do something }
Trong tất cả các trường hợp, instanceof cho phép bạn kiểm tra xem một đối tượng có phải là một instance của một lớp nào đó hay không, và tiến hành thực thi các hành động tương ứng trong tùy trường hợp đó.
Một vài ví dụ instanceof trong java
- Ví dụ kiểm tra một đối tượng là một instance của lớp String:
Object obj = "Hello"; if (obj instanceof String) { System.out.println("obj is a String"); } else { System.out.println("obj is NOT a String"); }
Trong ví dụ này, chương trình sẽ kiểm tra xem obj có phải là một instance của lớp String. obj là một instance của lớp String nên output là obj is a String
- Ví dụ kiểm tra một đối tượng là một instance của lớp Shape:
Shape shape = new Circle(); if (shape instanceof Circle) { System.out.println("shape is a Circle"); } else if (shape instanceof Rectangle) { System.out.println("shape is a Rectangle"); }
Trong ví dụ này, chương trình sẽ kiểm tra xem shape có phải là một instance của lớp Circle hoặc lớp Rectangle. shape là một instance của lớp Circle nên output là shape is a Circle
- Ví dụ kiểm tra một đối tượng là một instance của lớp Animals:
Animals animal = new Dog(); if(animal instanceof Dog) { System.out.println("animal is a Dog"); } else if(animal instanceof Cat) { System.out.println("animal is a Cat"); }
Trong ví dụ trên, chương trình sẽ kiểm tra xem animal có phải là một instance của lớp Dog hoặc lớp Cat. animal là một instance của lớp Dog nên output là animal is a Dog
- Ví dụ kiểm tra một đối tượng là một instance của lớp Object:
Object obj = new Integer(5); if(obj instanceof Object) { System.out.println("obj is an instance of Object"); }
Trong ví dụ này, chương trình sẽ kiểm tra xem obj có phải là một instance của lớp Object. obj là một instance của lớp Object, output là obj is an instance of Object
instanceof có thể sử dụng rộng rãi để xác định đối tượng là một lớp nào đó hoặc là một interface.
Chú ý rằng, nếu bạn kiểm tra một đối tượng với một class mà đối tượng đó là null, instanceof sẽ trả về false.