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

Reflection เป็นความสามารถของโปรแกรมในการสังเกตและ / หรือปรับเปลี่ยนโครงสร้างและ / หรือพฤติกรรมของมันที่รันไทม์ การสะท้อนแสงขึ้นอยู่กับภาษาการเขียนโปรแกรมที่สนับสนุน - โปรดติดแท็กภาษาการเขียนโปรแกรมที่ใช้เมื่อใช้แท็กนี้

13
วิธีอ่านค่าของฟิลด์ส่วนตัวจากคลาสอื่นใน Java
ฉันมีคลาสที่ออกแบบมาไม่ดีในบุคคลที่สามJARและฉันจำเป็นต้องเข้าถึงหนึ่งในฟิลด์ส่วนตัวของมัน ตัวอย่างเช่นทำไมฉันต้องเลือกเขตข้อมูลส่วนตัวจึงจำเป็น? class IWasDesignedPoorly { private Hashtable stuffIWant; } IWasDesignedPoorly obj = ...; ฉันจะใช้การสะท้อนเพื่อรับค่าได้stuffIWantอย่างไร

11
เปลี่ยนฟิลด์สแตติกสุดท้ายส่วนตัวโดยใช้การสะท้อน Java
ฉันมีคลาสที่มีprivate static finalฟิลด์ที่โชคไม่ดีที่ฉันต้องเปลี่ยนมันในเวลาทำงาน ใช้การสะท้อนฉันได้รับข้อผิดพลาดนี้: java.lang.IllegalAccessException: Can not set static final boolean field มีวิธีการเปลี่ยนแปลงค่าหรือไม่? Field hack = WarpTransform2D.class.getDeclaredField("USE_HACK"); hack.setAccessible(true); hack.set(null, true);



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

10
ทางเลือกโอเพนซอร์สเพื่อสะท้อนแสง? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ เพียงแค่จะถามว่าถ้าใครรู้ของแหล่งที่มาเปิดทางเลือกให้กับ RedGate ของสะท้อน ? ฉันสนใจที่จะตรวจสอบว่าเครื่องมือคล้ายกับตัวสะท้อนสัญญาณทำงานอย่างไร หมายเหตุถ้าคุณรู้ว่าเป็นทางเลือกที่ฟรี แต่ไม่ใช่โอเพ่นซอร์สกับตัวสะท้อนสัญญาณคุณสามารถตอบคำถามที่เกี่ยวข้องดังต่อไปนี้: สิ่งที่ดีกว่า. NET Reflector ข้อมูลอย่างย่อ - อัปเดต 11 พฤษภาคม 2554 การสรุปโครงการและเครื่องมือแบบโอเพนซอร์สที่แนะนำ: โครงสร้างพื้นฐานคอมไพเลอร์ทั่วไป (CCI) เซซิลโมโน ILSpy dnSpy (ทางแยกของ ILSpy โครงการปรากฏใช้งานมากกว่าเดิม) โปรแกรมแก้ไข Dotnet IL (DILE) IL.View Monoflector ( ไม่ใช้งานตั้งแต่เมษายน 2554) ทรัพยากรต่อไปนี้อาจเป็นที่สนใจ: TypeView.cs บันทึกของ Jason …

16
จะแสดงรายการฟังก์ชั่นทั้งหมดในโมดูล Python ได้อย่างไร
ฉันมีโมดูลหลามติดตั้งในระบบของฉันและฉันต้องการที่จะเห็นว่าฟังก์ชั่น / ชั้นเรียน / วิธีการที่มีอยู่ในมัน ฉันต้องการเรียกใช้ฟังก์ชั่น doc กับแต่ละอัน ในทับทิมฉันสามารถทำสิ่งต่าง ๆ เช่น ClassName.methods เพื่อรับรายการของวิธีการทั้งหมดที่มีในชั้นเรียนนั้น มีอะไรที่คล้ายกันในหลาม? เช่น. สิ่งที่ต้องการ: from somemodule import foo print foo.methods # or whatever is the correct method to call

15
สตริง Java ไม่เปลี่ยนรูปจริงๆหรือ
เราทุกคนรู้ว่าStringไม่เปลี่ยนรูปแบบใน Java แต่ตรวจสอบรหัสต่อไปนี้: String s1 = "Hello World"; String s2 = "Hello World"; String s3 = s1.substring(6); System.out.println(s1); // Hello World System.out.println(s2); // Hello World System.out.println(s3); // World Field field = String.class.getDeclaredField("value"); field.setAccessible(true); char[] value = (char[])field.get(s1); value[6] = 'J'; value[7] = 'a'; value[8] = 'v'; value[9] = 'a'; value[10] …

3
แท็กใน Go มีประโยชน์อะไรบ้าง?
ในGo Language Specificationจะกล่าวถึงภาพรวมโดยย่อของแท็ก: การประกาศฟิลด์อาจตามด้วยแท็กตัวอักษรของสตริงซึ่งเป็นคุณสมบัติสำหรับฟิลด์ทั้งหมดในการประกาศฟิลด์ที่สอดคล้องกัน แท็กนั้นสามารถมองเห็นได้ผ่านอินเทอร์เฟซการสะท้อน แต่ไม่สนใจ // A struct corresponding to the TimeStamp protocol buffer. // The tag strings define the protocol buffer field numbers. struct { microsec uint64 "field 1" serverIP6 uint64 "field 2" process string "field 3" } นี่เป็นคำอธิบายสั้น ๆ ของ IMO และฉันสงสัยว่าใครจะให้แท็กเหล่านี้กับฉันได้บ้าง
392 go  reflection  struct 


14
เหตุใด C ++ จึงไม่มีการสะท้อน
นี่เป็นคำถามที่ค่อนข้างแปลกประหลาด วัตถุประสงค์ของฉันคือเข้าใจการตัดสินใจออกแบบภาษาและระบุความเป็นไปได้ของการสะท้อนใน C ++ ทำไมคณะกรรมการภาษา C ++ ไม่สามารถนำการสะท้อนกลับมาใช้ในภาษาได้? การสะท้อนกลับยากเกินไปในภาษาที่ไม่ได้ทำงานบนเครื่องเสมือน (เช่น java) หรือไม่? หากมีการใช้การสะท้อนกลับสำหรับ C ++ สิ่งที่จะเป็นความท้าทาย? ฉันเดาว่าการใช้การสะท้อนนั้นเป็นที่รู้จักกันดี: บรรณาธิการสามารถเขียนได้ง่ายขึ้นรหัสโปรแกรมจะเล็กลงสามารถสร้าง mocks สำหรับการทดสอบหน่วยและอื่น ๆ ได้ แต่มันจะดีถ้าคุณสามารถแสดงความคิดเห็นเกี่ยวกับการใช้การสะท้อนเช่นกัน
337 c++  reflection 

5
ฉันจะตรวจสอบว่าประเภทเป็นประเภทย่อยหรือชนิดของวัตถุได้อย่างไร
ในการตรวจสอบว่าประเภทเป็นประเภทย่อยเป็นประเภทอื่นใน C # หรือไม่เป็นเรื่องง่าย: typeof (SubClass).IsSubclassOf(typeof (BaseClass)); // returns true อย่างไรก็ตามสิ่งนี้จะล้มเหลว: typeof (BaseClass).IsSubclassOf(typeof (BaseClass)); // returns false มีวิธีใดที่จะตรวจสอบว่าประเภทเป็นคลาสย่อยหรือคลาสพื้นฐานเองโดยไม่ต้องใช้ORโอเปอเรเตอร์หรือใช้วิธีการขยายหรือไม่
335 c#  reflection  types  subclass 

11
ฉันจะใช้การสะท้อนกลับเพื่อเรียกใช้วิธีการส่วนตัวได้อย่างไร
มีกลุ่มของวิธีการส่วนตัวในชั้นเรียนของฉันและฉันจำเป็นต้องเรียกวิธีการหนึ่งแบบไดนามิกขึ้นอยู่กับค่าการป้อนข้อมูล ทั้งรหัสการเรียกใช้และวิธีการเป้าหมายอยู่ในอินสแตนซ์เดียวกัน รหัสมีลักษณะดังนี้: MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType); dynMethod.Invoke(this, new object[] { methodParams }); ในกรณีนี้GetMethod()จะไม่ส่งคืนวิธีการส่วนตัว สิ่งที่BindingFlagsผมจะต้องจ่ายให้กับGetMethod()เพื่อที่จะสามารถหาวิธีเอกชน?

10
ตั้งค่าคุณสมบัติวัตถุโดยใช้การสะท้อน
มีวิธีใน C # ที่ฉันสามารถใช้การสะท้อนเพื่อตั้งค่าคุณสมบัติวัตถุหรือไม่ Ex: MyObject obj = new MyObject(); obj.Name = "Value"; ฉันต้องการตั้งค่าobj.Nameด้วยการสะท้อน สิ่งที่ต้องการ: Reflection.SetProperty(obj, "Name") = "Value"; มีวิธีทำเช่นนี้หรือไม่?

13
สิ่งที่อาจทำให้เกิด java.lang.reflect.InvocationTargetException?
ฉันพยายามทำความเข้าใจและอ่านสิ่งที่อาจทำให้เกิด แต่ฉันไม่สามารถทำได้: ฉันมีสิ่งนี้ในรหัสของฉัน: try{ .. m.invoke(testObject); .. } catch(AssertionError e){ ... } catch(Exception e){ .. } สิ่งนั้นคือเมื่อมันพยายามเรียกใช้วิธีการบางอย่างมันจะโยน InvocationTargetExceptionแทนที่จะเป็นข้อยกเว้นที่คาดหวังอื่น ๆ (โดยเฉพาะArrayIndexOutOfBoundsException) ในฐานะที่เป็นจริงผมรู้ว่าสิ่งที่วิธีการที่จะเรียกผมเดินตรงไปยังรหัสวิธีนี้และเพิ่มลองจับบล็อกบรรทัดที่คิดว่าจะโยน ArrayIndexOutOfBoundsExceptionและมันจริงๆโยนArrayIndexOutOfBoundsExceptionตามที่คาดไว้ แต่เมื่อขึ้นไปก็เปลี่ยนไปInvocationTargetExceptionและในรหัสข้างต้นcatch(Exception e) e คือInvocationTargetExceptionและไม่ArrayIndexOutOfBoundsException เป็นไปตามที่คาดไว้ สิ่งใดที่อาจทำให้เกิดพฤติกรรมดังกล่าวหรือฉันจะตรวจสอบสิ่งนั้นได้อย่างไร

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