เมื่อแนะนำวิธีการใช้คำหลักของอินสแตนซ์เพื่อพัฒนาอย่างสะดวกใน Android ให้ตรวจสอบแนวคิดของอินสแตนซ์ของ Java ก่อน
แนวคิดส่วนใหญ่ของอินสแตนซ์ของการกำหนดดังนี้: อินสแตนซ์ของเป็นตัวดำเนินการไบนารีใน Java และ ==,> และ <เป็นประเภทของสิ่งเดียวกัน เนื่องจากประกอบด้วยตัวอักษรจึงเป็นคำหลักที่สงวนไว้ใน Java ฟังก์ชั่นของมันคือการทดสอบว่าวัตถุทางด้านซ้ายเป็นอินสแตนซ์ของคลาสทางด้านขวาและส่งคืนข้อมูลประเภทบูลีนหรือไม่ ใช้เกาลัด:
สตริง s = "ฉันเป็นวัตถุ!"; บูลีน isobject = s อินสแตนซ์ของวัตถุ;
เราประกาศการอ้างอิงวัตถุสตริงชี้ไปที่วัตถุสตริงจากนั้นใช้ instancof เพื่อทดสอบว่าวัตถุที่ชี้ไปเป็นอินสแตนซ์ของคลาสวัตถุหรือไม่ เห็นได้ชัดว่านี่เป็นเรื่องจริงดังนั้นเราจึงกลับมาจริงนั่นคือค่าของ isObject เป็นจริง
อินสแตนซ์ของมีการใช้งานบางอย่าง ตัวอย่างเช่นเราเขียนระบบสำหรับการจัดการตั๋วเงินซึ่งมีสามหมวดหมู่:
ใบเรียกเก็บเงินระดับสาธารณะ {// รายละเอียดละเว้น} public class phonebill ขยายบิล {// รายละเอียดละเว้น} ชั้นเรียนสาธารณะ Gasbill ขยายบิล {// ละเว้นรายละเอียด}}มีวิธีการในตัวจัดการเพื่อยอมรับวัตถุประเภทบิลและคำนวณจำนวนเงิน สมมติว่าวิธีการคำนวณบิลสองวิธีนั้นแตกต่างกันและวัตถุบิลที่เข้ามาอาจเป็นหนึ่งในสองอย่างดังนั้นให้ใช้อินสแตนซ์ของการตัดสิน:
การคำนวณสองครั้งสาธารณะ (บิลบิล) {if (บิลอินสแตนซ์ของโทรศัพท์ bill) {// คำนวณค่าโทรศัพท์} ถ้า (Bill Instanceof Gasbill) {// คำนวณค่าก๊าซ} ... }ด้วยวิธีนี้สองคลาสย่อยสามารถประมวลผลได้ในวิธีเดียว
อย่างไรก็ตามวิธีการนี้มักจะถือว่าเป็นความล้มเหลวในการใช้ประโยชน์จากความหลากหลายเชิงวัตถุ ในความเป็นจริงฟังก์ชั่นข้างต้นต้องการวิธีการที่โอเวอร์โหลดสามารถทำได้อย่างสมบูรณ์ นี่คือวิธีการที่มุ่งเน้นวัตถุกลายเป็นวิธีที่ถูกต้องเพื่อหลีกเลี่ยงการกลับไปสู่โหมดการเขียนโปรแกรมที่มีโครงสร้าง เพียงแค่ให้สองชื่อและค่าส่งคืนและยอมรับวิธีการที่มีประเภทพารามิเตอร์ที่แตกต่างกัน:
การคำนวณสองครั้งสาธารณะ (ใบเรียกเก็บเงินโทรศัพท์) {// คำนวณค่าโทรศัพท์} การคำนวณสองครั้งสาธารณะ (Gasbill Bill) {// คำนวณค่าก๊าซ} ดังนั้นการใช้อินสแตนซ์ของไม่ได้เป็นวิธีที่แนะนำในกรณีส่วนใหญ่และควรใช้ polymorphism ได้ดี
ฉันคัดลอกข้างต้น ฉันคิดว่ามันเขียนได้ดีและฉันมีการแนะนำที่ชัดเจนดังนั้นฉันจึงเอามันไปพูด จะเห็นได้ว่ากุญแจสำคัญในการอินสแตนซ์คือการพิจารณาว่าวัตถุทางด้านซ้ายเป็นอินสแตนซ์ของคลาสทางด้านขวาหรือไม่ ถ้าเป็นเช่นนั้นมันสามารถจัดการตรรกะถัดไป
ใน Android คำหลักของอินสแตนซ์มักจะใช้เรียกวิธีการกิจกรรมในชิ้นส่วน ตัวอย่างเช่นคุณต้องเรียกวิธีการในกิจกรรมปัจจุบันในส่วน บางคนพูดแล้วฉันจะเขียนใหม่ใช่มั้ย จะเกิดอะไรขึ้นถ้ามีวิธีพิเศษชิ้นส่วนไม่รองรับ ในเวลานี้มีการใช้อินสแตนซ์ของ:
ถ้า (getActivity () อินสแตนซ์ของ indexactivity) ((indexactivity) getActivity ()). showccaidan ();
ดังที่เห็นได้จากรหัสสองบรรทัดข้างต้นหากชิ้นส่วนปัจจุบันเป็นชิ้นส่วนของ indexactivity จากนั้นหลังจากเรียกวิธีการในกิจกรรมเป็นเวลานานคุณต้องบังคับกิจกรรมปัจจุบันก่อนที่จะเรียกมัน
อันที่จริงไม่เพียง แต่ใช้คำหลักอินสแตนซ์ของคำหลัก แต่ยังอยู่ในอะแดปเตอร์ที่กำหนดเอง:
if (อินสแตนซ์บริบทของ CommodityWarningActivity) {Holder.entName_ll.SetVisability (view.visible); Holder.entName.settext (list.get (arg0) .getStrCorporationName ()); } else {holder.entName_ll.setVisability (view.gone); -บริบทควรเป็นที่รู้จักกันในชื่อ Android บริบทหมายถึงบริบทหรือฉากซึ่งเป็นกระบวนการของการทำงานระหว่างผู้ใช้และระบบปฏิบัติการ (ไม่ใช่ว่าฉันรู้บริบทคุณสามารถไปตรวจสอบข้อมูลก่อน) ดังนั้นหากคุณต้องการบริบทคุณสามารถใช้คำหลักของอินสแตนซ์ของคำหลัก
ข้างต้นเป็นคำอธิบายโดยละเอียดเกี่ยวกับตัวอย่างการใช้งานของคำหลักของคำหลักใน Java ใน Android แนะนำให้คุณรู้จัก หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!