public class Test1<Type>
{
public Type getCompositeMessage(Type... strings)
{
Type val = (Type) "";
for (Type str : strings) {
val = (Type) ((String)val + (String)str);
}
return val;
}
}
檢索方法:爲什麼反射不找方法?
try
{
Class<?> c = Class.forName("test1.Test1");
Method[] allMethods = c.getDeclaredMethods();
for (Method m : allMethods) {
String mname = m.getName();
System.out.println(mname);
}
Method m = c.getMethod("getCompositeMessage");
m.setAccessible(true);
Object o = m.invoke(c, "777777777777777777777777");
System.out.println(m);
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
輸出:
getCompositeMessage
java.lang.NoSuchMethodException: test1.Test1.getCompositeMessage()
at java.lang.Class.getMethod(Unknown Source)
at test1.Main.main(Main.java:25)
但是方法的名稱是一模一樣!爲什麼我收到NoSuchMethodException? 謝謝。
類型[]類是由於仿製藥在Java中的工作方式是非法的。 –
@HendrikBrummermann哦,對不起,沒有意識到類型是一個泛型參數 –
java.lang.IllegalArgumentException異常:對象是不sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法)宣佈 類\t的實例 \t在陽光下.reflect.NativeMethodAccessorImpl.invoke(未知來源) \t在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知來源) \t在java.lang.reflect.Method.invoke(未知來源) \t在test1.Main.main(主。java:27) – user710818