เมนู

ตรวจสอบประเภทของตัวแปร Java ด้วย instanceof

สารบัญ

ตรวจสอบประเภทตัวแปร

แนะนำโปรแกรมตัวอย่างเพื่อตรวจสอบชนิดของตัวแปรในภาษา Java

Java เป็นภาษาที่พิมพ์แบบคงที่ซึ่งประกาศประเภทอย่างชัดเจน ดังนั้นจึงไม่มีโอกาสตรวจสอบประเภทได้มากนัก อย่างไรก็ตาม การตรวจสอบประเภทอาจจำเป็นเมื่อใช้อ็อบเจ็กต์ที่สืบทอดมา

วิธีตรวจสอบประเภทใน Java อินสแตนซ์ของ เมื่อใช้ตัวดำเนินการ คุณสามารถประเมินคลาสและอินเทอร์เฟซด้วยคำสั่ง if ฯลฯ ดังที่แสดงด้านล่าง

ตัวแปร อินสแตนซ์ของคลาส

ตัวแปร อินสแตนซ์ของอินเทอร์เฟซ

อินสแตนซ์ของ สามารถระบุชื่อคลาสหรือชื่ออินเทอร์เฟซได้ทางด้านขวาของอินสแตนซ์ของ ค่าที่ส่งคืนจะเป็นบูลีน หากเป็นจริง ตัวแปรจะเป็นคลาสหรืออินเทอร์เฟซที่ระบุ

แชท&เมสเซนเจอร์ เป็นกรุ๊ปแวร์ที่รวมการสนทนาทางธุรกิจ การประชุมทางเว็บ การแชร์ไฟล์ การจัดการตารางเวลา การจัดการเอกสาร การจองห้องประชุม และการจัดการการเข้างานในลักษณะที่ใช้งานง่าย การรักษาความปลอดภัยที่สมบูรณ์แบบสำหรับธุรกิจใช้ได้ฟรี!

โปรแกรมตัวอย่าง

เริ่มจากรูปแบบที่ง่ายที่สุดกันก่อน คืนค่าเป็นจริงหากตัวแปร i เป็นจำนวนเต็ม หากไม่ใช่ให้คืนค่าเป็นเท็จ

รหัสตัวอย่าง

public static void integerSample() {
    Integer i = 100;
    boolean result = i instanceof Integer;
    System.out.println(result);
}

ผลลัพธ์เอาท์พุต

true

ตัวแปร i เป็นจำนวนเต็ม ดังนั้นผลลัพธ์จึงเป็นจริง อย่างไรก็ตาม สิ่งนี้ชัดเจนเกินไป และฉันไม่รู้ว่า instanceof มีไว้เพื่ออะไร ดังนั้น มาทำให้มันซับซ้อนขึ้นอีกหน่อยดีกว่า

การใช้ instanceof อย่างมีประสิทธิภาพ

การใช้ instanceof อย่างมีประสิทธิภาพอย่างหนึ่งคือการพิจารณาว่าตัวแปรอยู่ในคลาสย่อยใด

รหัสตัวอย่าง

ในโค้ดตัวอย่าง เราสร้างคลาสสัตว์ Animal คลาส Dog ที่สืบทอดมาจากคลาสสัตว์ และคลาส Cat และหลังจากสร้างอินสแตนซ์แล้ว ให้ตั้งค่าตัวแปรในวิธีการเล่น อินสแตนซ์ของ เอาต์พุตคอนโซลจะแยกย่อยตามการตัดสินใจ

class Animal {} 
class Dog extends Animal {}
class Cat extends Animal {}

public class Main {
    public static void main(String[] args) {
        instanceofSample();
    }
    
    static void instanceofSample() {
        Animal dog = new Dog();
        play(dog);
        Animal cat = new Cat();
        play(cat);
    }
    
    static void play(Animal animal) {
        if (animal instanceof Dog) {
            System.out.println("お散歩する");
        } else {
            System.out.println("猫じゃらしで遊ぶ");
        }
    }
}

ผลลัพธ์เอาท์พุต

お散歩する
猫じゃらしで遊ぶ

จุดสำคัญในวิธีการเล่นคือไม่มีความชัดเจนว่าสัตว์ที่ทะเลาะวิวาทนั้นเป็นสุนัขหรือแมว

อินสแตนซ์ของ ขณะนี้ คุณยังสามารถตรวจสอบอินสแตนซ์คลาสย่อย (Dog หรือ Cat) ที่อยู่ภายในซูเปอร์คลาส (Animal) เพื่อให้คุณสามารถใช้ในลักษณะนี้ได้

ตรวจสอบว่ามีการใช้อินเทอร์เฟซเฉพาะหรือไม่

คุณสามารถตรวจสอบว่ามีการใช้อินเทอร์เฟซเฉพาะสำหรับตัวแปรที่กำหนดเป้าหมายโดย instanceof หรือไม่ ตัวอย่างเช่นคุณสามารถใช้มันเช่นนี้

รหัสตัวอย่าง

ในโค้ดตัวอย่างด้านล่าง มีการสร้างคลาสสำหรับ Mr. Sato และ Mr. Suzuki และมีการใช้อินเทอร์เฟซ Car โดยสมมติว่ามีเพียง Mr. Suzuki เท่านั้นที่เป็นเจ้าของรถยนต์ เมธอด goShopping() ถือว่ากระบวนการไปช็อปปิ้ง แต่จะใช้งาน Car หรือแยกเอาต์พุตคอนโซลตามอินสแตนซ์ของ

interface Car {}
class Sato {}
class Suzuki implements Car {}

public class Main {
    public static void main(String[] args) throws Exception {
        instanceofSample();
    }
    
    static void instanceofSample() {
        Sato sato = new Sato();
        goShopping(sato);

        Suzuki suzuki = new Suzuki();
        goShopping(suzuki);
    }
    
    static void goShopping(Object human) {
        if (human instanceof Car) {
            System.out.println("車で行く");
        } else {
            System.out.println("歩いて行く");
        }
    }
}

ผลลัพธ์ที่ได้:

歩いて行く
車で行く

จะเห็นว่าสาขาการประมวลผลนั้นขึ้นอยู่กับว่ามีการใช้งานรถยนต์หรือไม่

  • URL をkoピーしました!
สารบัญ