Am का उपयोग कर प्राप्त करने और एक सुरक्षित विधि का एक अलग वर्ग में रहने वाले और भी अलग पैकेज आह्वान जावा प्रतिबिंब का उपयोग कर की कोशिश कर परीक्षण मामले में संरक्षित विधि को एक्सेस करना।जावा प्रतिबिंब
संरक्षित विधि युक्त वर्ग:
package com.myapp;
public class MyServiceImpl {
protected List<String> retrieveItems(String status) {
// Implementation
}
}
कॉलिंग वर्ग:
java.lang.NoSuchMethodException: com.myapp.MyServiceImpl.retrieveItems()
समय देने के लिए इस पढ़ने के लिए के लिए धन्यवाद:
package xxx.myapp.tests;
import com.myapp.MyServiceImpl;
public class MyTestCase {
List<String> items;
public void setUp() throws Exception {
MyServiceImpl service = new MyServiceImpl();
Class clazz service.getClass();
// Fails at the next line:
Method retrieveItems = clazz.getDeclaredMethod("retrieveItems");
// How to invoke the method and return List<String> items?
// tried this but it fails?
retrieveItems.invoke(clazz, "S");
}
}
संकलक इस अपवाद फेंकता है।
+1 - इस समस्या को अपवाद नहीं है कि है फ़्लैग करने का। एक बार विधि को पुनर्प्राप्त करने के बाद, इसे @ जेके के उत्तर के अनुसार सुलभ किया जाना चाहिए। –