[java] मापदंडों के साथ एक विधि को लागू करने के लिए मैं प्रतिबिंब का उपयोग कैसे करूं?


Answers

doIt विधि दो मापदंडों लेता है नतीजतन आपको विधि नाम के अतिरिक्त, दो मापदंडों को Class#getDeclaredMethod() । दो अतिरिक्त मापदंडों को Class उदाहरण होने चाहिए, जो एक Object[] स्पष्ट रूप से नहीं है। विशेष रूप से, उन Class इंस्टेंसों को समान मान की आवश्यकता होती है, जो कि पैरामीटर के प्रकार के रूप में स्वीकार करते हैं।

Method doIt = A.class.getDeclaredMethod("doIt", int[].class, int[].class);
Question

यहां मेरा वर्ग है:

public class A{
    private void doIt(int[] X, int[] Y){
       //change the values in X and Y
    }
}

मेरे पास एक और वर्ग है जो दो सरणियों को संशोधित करने के लिए doIt का उपयोग करने का प्रयास कर रहा है मेरे पास मेरे कोड में एक त्रुटि है लेकिन इसे नहीं मिल सकता है

public class B{
  public void myStuff(){
    A myA = new A();
    int[] X = {1,2,3,4,5};
    int[] Y = {4,5,6,7,8,9};
    Method doIt = A.class.getDeclaredMethod("doIt",new Object[]{X,Y}); // error
    doIt.setAccessible(true);
    doIt.invoke(myA,new Object[]{X,Y});
  }
}

कैसे विधि myStuff को ठीक करने पर कोई मदद?

अगर मैं getDeclaredMethod("doIt",new Object[]{X,Y}); कोड संकलन नहीं करता है

यदि बजाय मुझे मिल गया है getDeclaredMethod("doIt",null); तो यह कहते हैं, NoSuchMethodException




Links