คำถามติดแท็ก instanceof

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

9
รับชื่อคลาสของอินสแตนซ์?
ฉันจะหาชื่อของคลาสที่สร้างอินสแตนซ์ของวัตถุใน Python ได้อย่างไรถ้าฟังก์ชันที่ฉันทำนี้เป็นคลาสพื้นฐานที่คลาสของอินสแตนซ์ได้รับมา กำลังคิดว่าบางทีโมดูลตรวจสอบอาจช่วยฉันที่นี่ แต่ดูเหมือนจะไม่ให้สิ่งที่ฉันต้องการ และขาดการแยก__class__สมาชิกฉันไม่แน่ใจว่าจะรับข้อมูลนี้ได้อย่างไร

14
อะไรคือความแตกต่างระหว่างอินสแตนซ์ของและ Class.isAssignableFrom (…)?
ข้อใดต่อไปนี้ดีกว่า a instanceof B หรือ B.class.isAssignableFrom(a.getClass()) ความแตกต่างเพียงอย่างเดียวที่ฉันรู้คือเมื่อ 'a' เป็นโมฆะอันแรกจะคืนค่าเท็จในขณะที่ตัวที่สองส่งข้อยกเว้น นอกจากนั้นพวกเขาจะให้ผลลัพธ์เดียวกันเสมอหรือไม่?

24
อะไรคือความแตกต่างระหว่าง typeof และ instanceof และควรใช้กับอันอื่นเมื่อใด?
ในกรณีของฉันโดยเฉพาะ: callback instanceof Function หรือ typeof callback == "function" มันแตกต่างกันอย่างไรความแตกต่างคืออะไร? ทรัพยากรเพิ่มเติม: JavaScript สวนtypeof VS instanceof

24
ผลกระทบของประสิทธิภาพการใช้งานอินสแตนซ์ใน Java
ฉันกำลังทำงานกับแอปพลิเคชันและแนวทางการออกแบบหนึ่งวิธีนั้นเกี่ยวข้องกับการใช้งานตัวinstanceofดำเนินการอย่างหนักมาก ในขณะที่ฉันรู้ว่าการออกแบบ OO โดยทั่วไปพยายามหลีกเลี่ยงการใช้instanceofนั่นเป็นเรื่องราวที่แตกต่างและคำถามนี้เกี่ยวข้องกับการแสดงอย่างหมดจด ฉันสงสัยว่ามีผลกระทบต่อประสิทธิภาพการทำงานหรือไม่? เร็วแค่==ไหน? ตัวอย่างเช่นฉันมีคลาสฐานที่มี 10 คลาสย่อย ในฟังก์ชั่นเดียวที่ใช้คลาสพื้นฐานฉันจะตรวจสอบว่าคลาสเป็นอินสแตนซ์ของคลาสย่อยและดำเนินการตามปกติ อีกวิธีหนึ่งที่ฉันคิดว่าการแก้มันคือการใช้จำนวนเต็ม "type id" ดั้งเดิมแทนและใช้ bitmask เพื่อแสดงหมวดหมู่ของคลาสย่อยและจากนั้นก็ทำการเปรียบเทียบรูปแบบบิตของ subclasses "type id" กับ a หน้ากากคงที่เป็นตัวแทนของหมวดหมู่ เป็นที่instanceofที่ดีที่สุดอย่างใดโดย JVM ที่จะได้เร็วขึ้นกว่าที่? ฉันต้องการติดกับ Java แต่ประสิทธิภาพของแอพมีความสำคัญอย่างยิ่ง มันจะเจ๋งถ้ามีคนที่เคยไปตามถนนนี้มาก่อนจะได้รับคำแนะนำ ฉันกำลัง nitpicking มากเกินไปหรือเน้นสิ่งผิดเพื่อเพิ่มประสิทธิภาพหรือไม่

10
ตัวดำเนินการ instanceof ใน JavaScript คืออะไร
instanceofคำหลักใน JavaScript อาจจะค่อนข้างสับสนเมื่อมันเป็นครั้งแรกที่พบเป็นคนมักจะคิดว่า JavaScript ไม่ได้เป็นภาษาการเขียนโปรแกรมเชิงวัตถุ มันคืออะไร? มันแก้ปัญหาอะไรได้บ้าง? มันเหมาะสมเมื่อใดและเมื่อใด

10
ทำไมอินสแตนซ์ของคืนเท็จสำหรับตัวอักษรบางตัว?
"foo" instanceof String //=> false "foo" instanceof Object //=> false true instanceof Boolean //=> false true instanceof Object //=> false false instanceof Boolean //=> false false instanceof Object //=> false // the tests against Object really don't make sense ตัวอักษร Array และ Object literals ตรงกัน ... [0,1] instanceof Array //=> …

23
เป็นไปได้ไหมที่จะใช้ตัวดำเนินการ instanceof ในคำสั่ง switch?
ฉันมีคำถามเกี่ยวกับการใช้สวิตช์ตัวพิมพ์เล็กสำหรับinstanceofวัตถุ: ตัวอย่างเช่นปัญหาของฉันสามารถทำซ้ำได้ใน Java: if(this instanceof A) doA(); else if(this instanceof B) doB(); else if(this instanceof C) doC(): มันจะใช้งานได้switch...caseอย่างไร?


3
Javascript! instanceof If Statement
นี่เป็นคำถามพื้นฐานจริงๆเพียงเพื่อตอบสนองความอยากรู้ของฉัน แต่มีวิธีที่จะทำสิ่งนี้: if(obj !instanceof Array) { //The object is not an instance of Array } else { //The object is an instance of Array } กุญแจสำคัญในความสามารถในการใช้งานไม่ได้! ต่อหน้าตัวอย่าง โดยปกติวิธีที่ฉันต้องตั้งค่านี้เป็นเช่นนี้: if(obj instanceof Array) { //Do nothing here } else { //The object is not an instance of Array //Perform actions! } และมันก็น่ารำคาญนิดหน่อยที่จะต้องสร้างคำสั่ง …

11
เหตุผลใดที่จะชอบ getClass () มากกว่า instanceof เมื่อสร้าง. equals ()?
ฉันกำลังใช้ Eclipse เพื่อสร้าง.equals()และ.hashCode()มีตัวเลือกที่มีข้อความว่า "ใช้ 'อินสแตนซ์ของ' เพื่อเปรียบเทียบประเภท" ค่าเริ่มต้นสำหรับตัวเลือกนี้จะไม่ถูกตรวจสอบและใช้.getClass()เพื่อเปรียบเทียบประเภท มีเหตุผลใด ๆ ที่ฉันจะชอบ.getClass()มากกว่าinstanceof? โดยไม่ต้องใช้instanceof: if (obj == null) return false; if (getClass() != obj.getClass()) return false; การใช้instanceof: if (obj == null) return false; if (!(obj instanceof MyClass)) return false; ฉันมักจะตรวจสอบinstanceofตัวเลือกจากนั้นเข้าไปข้างในและลบเครื่องหมาย " if (obj == null)" (มันซ้ำซ้อนเนื่องจากวัตถุ null จะล้มเหลวเสมอinstanceof) มีเหตุผลใดบ้างที่เป็นความคิดที่ไม่ดี?

17
ตัวดำเนินการ 'instanceof' ที่ใช้ใน Java คืออะไร
สิ่งที่เป็นinstanceofผู้ประกอบการใช้? ฉันเคยเห็นสิ่งที่ชอบ if (source instanceof Button) { //... } else { //... } แต่มันก็ไม่สมเหตุสมผลสำหรับฉัน ฉันทำวิจัยแล้ว แต่มีตัวอย่างมาโดยไม่มีคำอธิบายใด ๆ
163 java  instanceof 

8
Java: Instanceof และ Generics
ก่อนที่ฉันจะดูโครงสร้างข้อมูลทั่วไปของฉันเพื่อหาดัชนีของค่าฉันต้องการดูว่ามันเป็นเพียงตัวอย่างของประเภทที่thisได้รับพารามิเตอร์หรือไม่ แต่ Eclipse บ่นเมื่อฉันทำสิ่งนี้: @Override public int indexOf(Object arg0) { if (!(arg0 instanceof E)) { return -1; } นี่คือข้อความแสดงข้อผิดพลาด: ไม่สามารถทำการตรวจสอบอินสแตนซ์เทียบกับพารามิเตอร์ type E ใช้แทนลบวัตถุเนื่องจากข้อมูลประเภททั่วไปจะถูกลบเมื่อรันไทม์ จะมีวิธีไหนดีกว่ากัน?


7
จะทำการตรวจสอบประเภทรันไทม์ใน Dart ได้อย่างไร?
สถานะข้อกำหนดของ Dart: ข้อมูลประเภท Reified สะท้อนถึงประเภทของอ็อบเจ็กต์ในขณะรันไทม์และอาจถูกสอบถามโดยโครงสร้างการตรวจสอบการพิมพ์แบบไดนามิก (แอนะล็อกของ instanceOf, casts, typecase เป็นต้นในภาษาอื่น ๆ ) ฟังดูดี แต่ไม่มีinstanceofตัวดำเนินการที่เหมือน แล้วเราจะทำการตรวจสอบประเภทรันไทม์ใน Dart ได้อย่างไร? เป็นไปได้หรือไม่

4
อินสแตนซ์ของ Vs getClass ()
ฉันเห็นประสิทธิภาพที่เพิ่มขึ้นเมื่อใช้งานgetClass()และ==ดำเนินการมากกว่าinstanceOfตัวดำเนินการ Object str = new Integer("2000"); long starttime = System.nanoTime(); if(str instanceof String) { System.out.println("its string"); } else { if (str instanceof Integer) { System.out.println("its integer"); } } System.out.println((System.nanoTime()-starttime)); starttime = System.nanoTime(); if(str.getClass() == String.class) { System.out.println("its string in equals"); } else { if(str.getClass() == Integer.class) { System.out.println("its integer"); } …
114 java  class  instanceof 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.