ตรวจสอบประเภทตัวแปร
แนะนำโปรแกรมตัวอย่างเพื่อตรวจสอบชนิดของตัวแปรในภาษา 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("歩いて行く");
}
}
}
ผลลัพธ์ที่ได้:
歩いて行く
車で行く
จะเห็นว่าสาขาการประมวลผลนั้นขึ้นอยู่กับว่ามีการใช้งานรถยนต์หรือไม่