Xem thêm

Java instanceof: Toán tử instanceof trong Java

Huy Erick
Toán tử instanceof trong Java so sánh một thể hiện của biến tham chiếu với kiểu lớp, kiểu lớp con hoặc kiểu giao diện. Java instanceof cũng được gọi là "toán tử so sánh kiểu"...

Toán tử instanceof trong Java so sánh một thể hiện của biến tham chiếu với kiểu lớp, kiểu lớp con hoặc kiểu giao diện. Java instanceof cũng được gọi là "toán tử so sánh kiểu" vì nó so sánh kiểu của một đối tượng với kiểu được chỉ định. Nếu đối tượng được coi là cùng kiểu với kiểu chỉ định, kết quả sẽ là true, ngược lại sẽ là false.

Bài viết này sẽ giới thiệu cách hoạt động và cách sử dụng toán tử instanceof trong Java. Ngoài ra, các mục tiêu học tập sau đây sẽ được trình bày.

Cách hoạt động của toán tử Java instanceof

Toán tử Java instanceof hoạt động theo mô hình "là-một" ("is-a"). Việc kiểm tra "là-một" cũng được mô tả là "đối tượng là một kiểu lớp". Cách hoạt động của toán tử instanceof phụ thuộc vào cú pháp sau:

biến_tham_chiếu instanceof TênLớp;

Toán tử instanceof chỉ hoạt động với biến tham chiếu. Trong Java, biến có thể thuộc loại "nguyên thủy" hoặc "tham chiếu". Biến tham chiếu trỏ đến một đối tượng trong bộ nhớ. Toán tử instanceof trả về một giá trị boolean.

Cách sử dụng toán tử Java instanceof

Toán tử instanceof trong Java có nhiều ứng dụng khác nhau. Nó có thể được sử dụng để lấy thể hiện của các đối tượng của một lớp, tức là thể hiện của bất kỳ biến nào. Trong phần này, chúng ta sẽ xem xét các trường hợp sử dụng khác nhau của toán tử instanceof trong Java.

Kiểm tra xem một mảng có thuộc kiểu lớp Array không?

Java cung cấp các lớp tích hợp để tham chiếu đến các mảng. Lớp java.lang.Object của Java liên quan đến các mảng. Trong đoạn mã dưới đây, chúng ta sẽ triển khai toán tử instanceof trên các mảng.

int[] arr = {1, 2, 3};
System.out.println(arr instanceof java.lang.Object);

Trong đoạn mã trên:

  • Một mảng (arr) được khởi tạo với các giá trị Integer.
  • Toán tử instanceof được sử dụng để kiểm tra thể hiện của arr có thuộc kiểu java.lang.Object hay không.

Kết quả đầu ra

Prüfen, ob das Array Objekt eine Instanz einer bestimmten Klasse ist

Toán tử instanceof đã trả về giá trị true, cho thấy biến arr thuộc lớp java.lang.Object.

Lưu ý: Thay vì sử dụng java.lang.Object, bạn cũng có thể sử dụng chỉ Object để thực hiện cùng một quy trình. Ngoài ra, một biến String cũng có thể được so sánh với java.lang.String bằng cách sử dụng toán tử thể hiện.

Kiểm tra xem một đối tượng có phải là một thể hiện của một lớp không?

Trong đoạn mã dưới đây, toán tử instanceof được sử dụng để so sánh kiểu của đối tượng với lớp.

InstOf obj = new InstOf();
System.out.println(obj instanceof InstOf);

Trong đoạn mã trên:

  • Một đối tượng (obj) của lớp (InstOf) được tạo ra.
  • Toán tử instanceof được sử dụng để kiểm tra xem obj có phải là một thể hiện của InstOf hay không.

Kết quả đầu ra

Wir prüfen, ob das Objekt Teil einer Oberklasse ist, beziehungsweise eine Referenz zu ebendieser besteht (engl. Parent Reference).

Toán tử instanceof đã trả về giá trị true, cho thấy obj là một thể hiện của lớp InstOf.

Kiểm tra thể hiện của đối tượng trong một lớp được kế thừa?

Việc kế thừa trong Java được áp dụng để kiểm tra cách một thể hiện hoạt động trong một lớp được kế thừa.

class Beispiel {}
public class InOf extends Beispiel {
    public static void main(String[] args) {
        InOf obj = new InOf();
        // Kiểm tra xem nó có phải là một phần của lớp con không
        System.out.println(obj instanceof InOf);
        // Kiểm tra xem nó có phải là phần của lớp cha không
        System.out.println(obj instanceof Beispiel);
    }
}

Trong đoạn mã trên:

  • Lớp InOf mở rộng lớp Beispiel.
  • Một đối tượng của lớp InOf được tạo ra.
  • Toán tử instanceof được sử dụng để kiểm tra thể hiện của obj với các lớp cha và lớp con.

Kết quả đầu ra

Der instanceof ist KEIN Vergleichsoperator (engl. Type Comparison Operator)!

Kết quả của toán tử instanceof là true, cho thấy đối tượng của lớp InOf (lớp con) có thể được truy cập từ các lớp cha và con.

Kiểm tra thể hiện của đối tượng trong một lớp được kế thừa?

Csử dụng toán tử instanceof trong một đối tượng null.

InstOf obj1 = null;
System.out.println(obj1 instanceof InstOf);

Chúng ta tạo một đối tượng của lớp InOf với giá trị null. Sau đó, toán tử instanceof được áp dụng để so sánh kiểu của một đối tượng với lớp.

Lưu ý: obj1 là một biến lớp, vì phải sử dụng hàm tạo của lớp Java để khởi tạo đối tượng.

Kết quả đầu ra

Java instance of: Die Zusammenfassung!

Kết quả cho thấy một đối tượng null không thể được sử dụng để so sánh kiểu với một lớp. Kết quả là "false".

Tổng kết: Toán tử instanceof trong Java

Toán tử instanceof trong Java được sử dụng để so sánh kiểu của một đối tượng với lớp, lớp con và giao diện của nó. Trong bài viết này, chúng tôi đã cung cấp một cái nhìn tổng quan về toán tử instanceof trong Java. Toán tử này có thể được sử dụng để so sánh một chuỗi, một mảng Java và các lớp tiêu chuẩn của Java. Các ví dụ khác nhau đã được cung cấp để minh họa cách sử dụng instanceof.

1