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

21
ฉันจะเรียกใช้วิธีการ Java ได้อย่างไรเมื่อกำหนดชื่อวิธีเป็นสตริง?
ถ้าฉันมีตัวแปรสองตัว: Object obj; String methodName = "getName"; objฉันจะเรียกวิธีการที่ระบุโดยmethodNameบนคลาสได้อย่างไร? วิธีการที่ถูกเรียกไม่มีพารามิเตอร์และStringค่าตอบแทน มันทะเยอทะยานสำหรับถั่วจาวา
684 java  reflection  invoke 

22
การดำเนินการข้ามเธรดไม่ถูกต้อง: การควบคุมการเข้าถึงจากเธรดอื่นที่ไม่ใช่เธรดที่สร้างขึ้น
ฉันมีสถานการณ์ (แบบฟอร์ม Windows, C #, .NET) มีรูปแบบหลักที่โฮสต์การควบคุมผู้ใช้บางส่วน การควบคุมผู้ใช้ดำเนินการกับข้อมูลจำนวนมากเช่นถ้าฉันเรียกUserControl_LoadวิธีการโดยตรงUI จะไม่ตอบสนองต่อช่วงเวลาสำหรับการดำเนินการตามวิธีโหลด เพื่อเอาชนะสิ่งนี้ฉันโหลดข้อมูลในเธรดอื่น (พยายามเปลี่ยนรหัสที่มีอยู่ให้น้อยที่สุดเท่าที่จะทำได้) ฉันใช้เธรดผู้ทำงานเบื้องหลังซึ่งจะโหลดข้อมูลและเมื่อเสร็จแล้วจะแจ้งให้แอปพลิเคชันทราบว่าได้ทำงานเสร็จแล้ว ตอนนี้เป็นปัญหาจริง UI ทั้งหมด (ฟอร์มหลักและส่วนควบคุมย่อยผู้ใช้) ถูกสร้างขึ้นบนเธรดหลักหลัก ในวิธีโหลดของการควบคุมผู้ใช้ฉันกำลังดึงข้อมูลตามค่าของการควบคุมบางอย่าง (เช่นกล่องข้อความ) ใน userControl รหัสเทียมจะมีลักษณะเช่นนี้: รหัส 1 UserContrl1_LoadDataMethod() { if (textbox1.text == "MyName") // This gives exception { //Load data corresponding to "MyName". //Populate a globale variable List<string> which will be binded to …

6
ความแตกต่างระหว่าง Invoke () และ BeginInvoke () คืออะไร
แค่สงสัยว่าความแตกต่างระหว่างBeginInvoke()และInvoke()คืออะไร? ส่วนใหญ่สิ่งที่แต่ละคนจะใช้สำหรับ แก้ไข: อะไรคือความแตกต่างระหว่างการสร้างวัตถุเธรดและการเรียกใช้การเรียกนั้นและเพียงแค่เรียกBeginInvoke()ผู้แทน? หรือพวกเขาเป็นสิ่งเดียวกัน

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 เป็นไปตามที่คาดไว้ สิ่งใดที่อาจทำให้เกิดพฤติกรรมดังกล่าวหรือฉันจะตรวจสอบสิ่งนั้นได้อย่างไร

9
Reflection: วิธีเรียกใช้เมธอดด้วยพารามิเตอร์
ฉันพยายามเรียกใช้วิธีการผ่านการสะท้อนกับพารามิเตอร์และฉันได้รับ: วัตถุไม่ตรงกับประเภทเป้าหมาย ถ้าฉันเรียกใช้เมธอดที่ไม่มีพารามิเตอร์จะทำงานได้ดี ขึ้นอยู่กับรหัสต่อไปนี้ถ้าฉันเรียกวิธีการTest("TestNoParameters")ทำงานได้ดี อย่างไรก็ตามถ้าฉันโทรTest("Run")ฉันจะได้รับการยกเว้น มีบางอย่างผิดปกติกับรหัสของฉันหรือไม่ จุดประสงค์เริ่มต้นของฉันคือการส่งอาร์เรย์ของวัตถุเช่นpublic void Run(object[] options)แต่สิ่งนี้ไม่ได้ผลและฉันพยายามทำสิ่งที่ง่ายกว่าเช่นสตริงที่ไม่ประสบความสำเร็จ // Assembly1.dll namespace TestAssembly { public class Main { public void Run(string parameters) { // Do something... } public void TestNoParameters() { // Do something... } } } // Executing Assembly.exe public class TestReflection { public void Test(string methodName) { …


5
Javascript เรียกใช้เมธอดอ็อบเจ็กต์แบบไดนามิกจากสตริง
ฉันสามารถเรียกเมธอดอ็อบเจ็กต์แบบไดนามิกโดยมีชื่อเมธอดเป็นสตริงได้หรือไม่ ฉันจะจินตนาการได้ดังนี้: var FooClass = function() { this.smile = function() {}; } var method = "smile"; var foo = new FooClass(); // I want to run smile on the foo instance. foo.{mysterious code}(); // being executed as foo.smile();

9
วิงวอน (Delegate)
ใครก็ได้โปรดอธิบายข้อความนี้ที่เขียนไว้ในลิงค์นี้ Invoke(Delegate): ดำเนินการผู้รับมอบสิทธิ์ที่ระบุบนเธรดที่เป็นเจ้าของหมายเลขอ้างอิงหน้าต่างของตัวควบคุม ใครสามารถอธิบายความหมาย (โดยเฉพาะตัวหนา) ฉันไม่สามารถเข้าใจได้อย่างชัดเจน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.