दौरान पैरामीटर के रूप में किसी सरणी गुजर मैं बहुत मौलिक कुछ याद करना चाहिए। जब मैं किसी विधि आमंत्रण के दौरान किसी भी प्रकार की सरणी पारित करने का प्रयास करता हूं तो मुझे एक त्रुटि मिलती है। हालांकि जब मैं इसे सामान्य रूप से करता हूं तो यह काम करता है।IllegalArgumentException जब विधि मंगलाचरण
यह पूरा कोड है कि विफल रहता है
import java.lang.reflect.Method;
public class Main {
public static void main(String[] args) throws Exception {
// Normal
MyClass.sayHello(new String[] {"StackOverflow"});
// Reflection
Method m = MyClass.class.getMethod("sayHello", String[].class);
m.invoke(null, new String[]{"StackOverflow"});
}
static class MyClass {
public static void sayHello(String[] args) {
System.out.println("Hello " + args[0]);
}
}
}
अपवाद फेंक दिया
Exception in thread "main" java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at Main.main(Main.java:11)
String...
या तो btw काम नहीं करता है।
TLDR: हमेशा की तरह RTFD – mvd
हाँ, मैं एक ही चेतावनी मिल गया। यह कोई समझ नहीं आता है कि जावा को सरणी तर्कों की सरणी की आवश्यकता क्यों होगी, लेकिन यह काम करता है। धन्यवाद! – TomTom
@ टॉमटॉम: यह सही समझ में आता है: इसे एक सरणी की आवश्यकता होती है क्योंकि कई तर्क हो सकते हैं। उस सरणी का एकमात्र तत्व स्वयं एक सरणी है, क्योंकि विधि के पैरामीटर एक सरणी है। विधि में एक और पैरामीटर जोड़ने का प्रयास करें और इससे अधिक समझ आएगी। और भविष्य में, * कभी भी चेतावनियों को अनदेखा न करें :) –