จะรับประเภทของวัตถุใน Java ได้อย่างไร

Ca Rab Prapheth Khxng Watthu Ni Java Di Xyangri



อ็อบเจ็กต์เป็นเอนทิตีทางกายภาพที่มีสถานะและพฤติกรรมของตัวเอง และทำหน้าที่เป็นอินสแตนซ์เฉพาะของคลาส Java มัน. เมื่อวัตถุมีต้นกำเนิดจากแหล่งกำเนิด จะถือว่ามีประโยชน์ในการตรวจสอบประเภทของวัตถุ นอกจากนี้ การรู้ประเภทของอ็อบเจ็กต์เป็นสิ่งสำคัญเมื่อทำงานกับคอลเล็กชันที่มีอ็อบเจ็กต์ต่างกัน หรือเมื่อจำเป็นต้องดำเนินการตามตรรกะด้วยตัวแปรประเภทเดียวกัน

บทความนี้จะช่วยให้คุณเรียนรู้วิธีรับประเภทของวัตถุใน Java

จะรับประเภทของวัตถุใน Java ได้อย่างไร

สำหรับการรับประเภทของอ็อบเจ็กต์คลาสที่กำหนดไว้ล่วงหน้าหรือที่ผู้ใช้กำหนดใน Java คุณสามารถใช้:







  • getClass() กระบวนการ
  • ตัวอย่างของ โอเปอเรเตอร์

ตอนนี้เราจะตรวจสอบแต่ละวิธีที่กล่าวถึงทีละรายการ!



วิธีที่ 1: รับประเภทของออบเจ็กต์คลาสที่กำหนดไว้ล่วงหน้าโดยใช้เมธอด getClass()

ใน Java เรามีคลาสที่กำหนดไว้ล่วงหน้า เช่น คลาส wrapper เช่น String, Double, Integer และอื่นๆ อีกมากมาย บางครั้งเราจำเป็นต้องตรวจสอบประเภทวัตถุในขณะที่ใช้คลาสที่กำหนดไว้ล่วงหน้า เพื่อจุดประสงค์นี้ Java เสนอ“ getClass() ” วิธีการที่เป็นของ “ วัตถุ ' ระดับ.



ไวยากรณ์
ไวยากรณ์ของ “ getClass() ” วิธีจะได้รับดังนี้:





x getClass ( )

ที่นี่ “ getClass() ” วิธีการจะส่งคืนคลาสของที่ระบุ “ x ' วัตถุ.

ตัวอย่าง
ในตัวอย่างนี้ เราจะสร้างวัตถุประเภทสตริงชื่อ “ x ” ซึ่งมีค่าดังต่อไปนี้



สตริง x = 'สวัสดี' ;

ต่อไป เราจะพิมพ์คำสั่งโดยใช้ “ System.out.println() ' กระบวนการ:

ระบบ . ออก . println ( 'x เป็นของ?' ) ;

สุดท้ายเราจะได้ประเภทของวัตถุ “ x ” โดยเรียก “ getClass() ' กระบวนการ:

ระบบ . ออก . พิมพ์ ( x getClass ( ) ) ;

ผลลัพธ์แสดงว่าตัวแปรที่สร้างขึ้นเป็นของคลาส Java String:

มาดูวิธีอื่นในการรับประเภทวัตถุโดยใช้ตัวดำเนินการ 'instanceof'

วิธีที่ 2: รับประเภทของออบเจ็กต์คลาสที่กำหนดไว้ล่วงหน้าโดยใช้ตัวดำเนินการ 'instanceof'

คุณยังสามารถใช้ “ ตัวอย่างของ ตัวดำเนินการ ” เพื่อตรวจสอบประเภทวัตถุในโปรแกรม Java โอเปอเรเตอร์นี้ส่งคืนค่าบูลีนซึ่งระบุว่าอ็อบเจ็กต์นั้นเป็นอินสแตนซ์ของคลาสเฉพาะหรือไม่

ไวยากรณ์
ไวยากรณ์ของ “ ตัวอย่างของ ” มีดังนี้

x ตัวอย่างของ จำนวนเต็ม

ที่นี่, ' x ” เป็นวัตถุและ “ จำนวนเต็ม ” เป็นคลาส wrapper Java ที่กำหนดไว้ล่วงหน้า “ ตัวอย่างของ ตัวดำเนินการ ” ตรวจสอบว่าวัตถุนั้นเป็นของคลาสที่กล่าวถึงหรือไม่และส่งกลับค่าบูลีน

ตัวอย่าง
ในตัวอย่างนี้ เรามีวัตถุ “ x ” ของคลาสจำนวนเต็มที่มี “ 5 ” ตามมูลค่า:

จำนวนเต็ม x = 5 ;

ต่อไป เราจะพิมพ์คำสั่งโดยใช้ “ System.out.println() ' กระบวนการ:

ระบบ . ออก . พิมพ์ ( 'x เป็นอินสแตนซ์ของคลาส Integer หรือไม่ ' ) ;

ตอนนี้ เราจะตรวจสอบว่าวัตถุนั้นเป็นอินสแตนซ์ของคลาส Integer หรือไม่:

ระบบ . ออก . พิมพ์ ( x ตัวอย่างของ จำนวนเต็ม ) ;

ผลลัพธ์ที่แสดง “ จริง ” เป็นวัตถุ “ x ” เป็นตัวอย่างของคลาสจำนวนเต็ม:

ณ จุดนี้ คุณอาจสงสัยว่าจะรับประเภทของอ็อบเจ็กต์คลาสที่ผู้ใช้กำหนดได้อย่างไร ส่วนที่ระบุด้านล่างจะช่วยคุณในเรื่องนี้

วิธีที่ 3: รับประเภทของออบเจ็กต์คลาสที่ผู้ใช้กำหนดโดยใช้เมธอด getClass()

คุณยังสามารถรับประเภทของอ็อบเจ็กต์คลาสที่ผู้ใช้กำหนดได้ด้วยความช่วยเหลือของ ' getClass() ' กระบวนการ. ในสถานการณ์เช่นนี้ เราจะเปรียบเทียบวัตถุกับชื่อคลาสโดยใช้ “ == ตัวดำเนินการเปรียบเทียบ

ไวยากรณ์
สำหรับวัตถุประสงค์ที่ระบุ ไวยากรณ์ของ “ getClass() ” วิธีได้รับเป็น:

myclassObj. getClass ( ) == ห้องเรียนของฉัน. ระดับ

ที่นี่ “ getClass() ” วิธีถูกเรียกโดย “ myclassObj ” วัตถุของ “ ห้องเรียนของฉัน ” แล้วเปรียบเทียบกับชื่อโดยใช้ตัวดำเนินการเปรียบเทียบ “ ==

ตัวอย่าง
ในตัวอย่างนี้ เรามีสามคลาสชื่อ “ ห้องเรียนของฉัน ”, “ MynewClass ', และ ' ตัวอย่าง ” โดยที่ MyClass ทำหน้าที่เป็นคลาสหลักของ MynewClass:

ระดับ ห้องเรียนของฉัน { }

MynewClass ” เป็นคลาสย่อยที่ขยายจาก “ ห้องเรียนของฉัน ”:

ระดับ MynewClass ยืดออก ห้องเรียนของฉัน { }

ในเมธอด main() ของคลาส “ ตัวอย่าง ” เราจะประกาศและยกตัวอย่างวัตถุของคลาสหลัก “ ห้องเรียนของฉัน ” จากนั้นตรวจสอบว่าวัตถุที่สร้างขึ้นนั้นเป็นของคลาสใด พ่อแม่หรือลูก? ในการทำเช่นนั้น เราจะเรียก “ getClass() ” กับวัตถุที่สร้างขึ้นและเปรียบเทียบค่าผลลัพธ์กับชื่อคลาสแม่และลูกโดยใช้เงื่อนไข if-else-if:

สาธารณะ ระดับ ตัวอย่าง {
สาธารณะ คงที่ โมฆะ หลัก ( สตริง [ ] args ) {
MyClass myclassObj = ใหม่ ห้องเรียนของฉัน ( ) ;
ถ้า ( myclassObj. getClass ( ) == ห้องเรียนของฉัน. ระดับ ) {
ระบบ . ออก . println ( 'วัตถุ 'myclassObj' เป็นประเภทของ 'MyClass'' ) ;
} อื่น ถ้า ( myclassObj. getClass ( ) == มายนิวคลาส ระดับ ) {
ระบบ . ออก . println ( 'วัตถุ 'myclassObj' เป็นประเภทของ 'MynewClass'' ) ;
}
}
}

ผลลัพธ์บ่งชี้ว่าวัตถุ “ myclassObj ” เป็นของคลาสพาเรนต์ชื่อ “ ห้องเรียนของฉัน ”:

ตอนนี้มุ่งหน้าไปยังส่วนถัดไป!

วิธีที่ 4: รับประเภทของออบเจ็กต์คลาสที่ผู้ใช้กำหนดโดยใช้ตัวดำเนินการ 'instanceof'

คล้ายกับคลาสที่กำหนดไว้ล่วงหน้า สำหรับคลาสที่กำหนดโดยผู้ใช้ คุณยังสามารถรับประเภทของอ็อบเจ็กต์ได้โดยใช้ปุ่ม ' ตัวอย่างของ ตัวดำเนินการ

ไวยากรณ์
ไวยากรณ์ได้รับด้านล่าง:

myclassObj ตัวอย่างของ ห้องเรียนของฉัน

ที่นี่ “ ตัวอย่างของ ” ผู้ประกอบการจะตรวจสอบว่า “ myclassObj ” เป็นตัวอย่างของ “ ห้องเรียนของฉัน ' หรือไม่.

ตัวอย่าง
ตอนนี้เราจะใช้คลาสเดียวกันกับที่เราได้สร้างไว้ในตัวอย่างที่กล่าวถึงก่อนหน้านี้ ข้อแตกต่างเพียงอย่างเดียวคือเราจะใช้ “ ตัวอย่างของ ตัวดำเนินการ ” เพื่อตรวจสอบว่าอินสแตนซ์อ็อบเจ็กต์ที่สร้างเป็นของคลาส parent หรือ child:

สาธารณะ ระดับ ตัวอย่าง {
สาธารณะ คงที่ โมฆะ หลัก ( สตริง [ ] args ) {
MyClass myclassObj = ใหม่ ห้องเรียนของฉัน ( ) ;
ถ้า ( myclassObj ตัวอย่างของ ห้องเรียนของฉัน ) {
ระบบ . ออก . println ( 'วัตถุ 'myclassObj' เป็นอินสแตนซ์ของ 'MyClass'' ) ;
} อื่น ถ้า ( myclassObj ตัวอย่างของ MynewClass ) {
ระบบ . ออก . println ( 'วัตถุ 'myclassObj' เป็นตัวอย่างของ 'MynewClass'' ) ;
}
}
}

ผลลัพธ์ที่ได้แสดงให้เห็นว่า “ ตัวอย่างของ ตัวดำเนินการตรวจสอบประเภทของวัตถุเป็น “ ห้องเรียนของฉัน ”:

เราได้รวบรวมวิธีการทั้งหมดที่เกี่ยวข้องกับการรับประเภทวัตถุใน Java

บทสรุป

ในการรับประเภทของวัตถุใน Java คุณสามารถใช้ “ getClass() ” วิธีการหรือ “ ตัวอย่างของ ตัวดำเนินการ เมธอดเหล่านี้สามารถใช้เพื่อตรวจสอบประเภทอ็อบเจ็กต์สำหรับคลาสทั้งแบบกำหนดล่วงหน้าและแบบกำหนดโดยผู้ใช้ เมธอด getClass() จะคืนค่าชื่อคลาสในขณะที่โอเปอเรเตอร์ 'instanceof' ส่งคืนค่าบูลีน โดยที่ ' จริง ” แสดงว่าวัตถุนั้นเป็นของคลาสที่ระบุนั้น มิฉะนั้นจะส่งคืน ' เท็จ ” บทความนี้มีวิธีการทั้งหมดในการรับประเภทวัตถุใน Java