Object b=m.invoke("test",null);//这里出错
错误有二
1。test 你是不是已经new出来了。
2。即使你前面都对了,m.invoke("test",null),第二个参数也不是null
因为Atest中有一个方法
public void settestStr(java.lang.String str)你要有一个String 的参数
错误有二
1。test 你是不是已经new出来了。
2。即使你前面都对了,m.invoke("test",null),第二个参数也不是null
因为Atest中有一个方法
public void settestStr(java.lang.String str)你要有一个String 的参数
class ATest
String testStr;
public void settestStr(java.lang.String str) {
this.testStr = str;
}
public static void main(String[] args){
String[] param=new String[]{"testStr"}; //这个是要设置的字符串
Atest a=new Atest();
java.lang.reflect.Method m=(Atest.class).getMethod("settestStr",new Class[]{String.class});
Object b=m.invoke(a,param);
System.out.println(a.testStr);
}
}
Class ca = a.getClass();
Method method_n = ca .getDeclaredMethod("settestStr",class_n);//第二个参数是这个方法的返回类型你自己去写吧
最后才
method_n.invoke(a,ss);
第二个参数是你要传的参数
c[0]="".getClass(); //这种写法太不可思议了
//上面两句相当于
Class[] param=new Class[]{String.class};java.lang.reflect.Method m=Atest.getClass().getDeclaredMethod("settestStr",c);
//这句怎么编译过的??Method m=(Atestc.class).getMethod("settestStr",c);Object b=m.invoke("test",null);//这里出错,这句怎么看都不顺眼Object result=m.invoke(new Atest(),param);
第一个参数说明要在哪个实例调用该方法,第二个参数是该方法的参数列表
我也觉得这种写法很搞笑,但是我起先在JBX里直接用String.class居然死活不让我编译过去,后来一怒只下就这样写了。java.lang.reflect.Method m=Atest.getClass().getDeclaredMethod("settestStr",c);
为什么不能编译过去?我在JBX编译过N次了。哎。关键是懒得下载文档,JBX里的帮助文档也给我搞丢了。