Çok önemli bir şeyi özlemeliyim. Bir yöntem çağırma sırasında herhangi bir türden bir dizi geçmek çalıştığınızda bir hata alıyorum. Ancak normal yaptığım zaman çalışır.Yöntem çağırma sırasında bir Diziyi parametre olarak iletirken IllegalArgumentException
Bu durum ya Btw çalışmıyor
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...
atılan
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]);
}
}
}
başarısız tam koddur.
TLDR: her zaman olduğu gibi RTFD – mvd
Evet, aynı uyarıyı aldım. Java'nın bir dizi dizi argümanına neden ihtiyaç duyduğu hiç bir anlam ifade etmiyor, ama işe yarıyor. Teşekkürler! – TomTom
@TomTom: Bu mükemmel bir anlam ifade ediyor: bir dizi gerekiyor çünkü çoklu argümanlar olabilir. Bu dizinin tek elemanı bir dizidir, çünkü yönteme parametresi bir dizidir. Yönteme başka bir parametre eklemeyi deneyin ve daha mantıklı olacaktır. Ve gelecekte, * asla * uyarıları ihmal etmeyin :) –