黑马程序员技术交流社区
标题:
关于反射的问题
[打印本页]
作者:
381946250
时间:
2013-5-28 17:36
标题:
关于反射的问题
本帖最后由 381946250 于 2013-5-29 23:58 编辑
import java.lang.reflect.Field;
import java.lang.reflect.Method;
class MethodTest{
public static void main(String []args)throws Exception
{
Sum s=new Sum();
Class cla=s.getClass();
Method method=cla.getMethod("getAdd",int.class);
System.out.println(method.invoke(s,1,2,3));
}
}
class Sum{
public int getAdd(int ...args)
{
int sum=0;
for(int arg:args)
{
sum+=arg;
}
return sum;
}
}
不知道为什么编译的时候没有错误,但是在运行的时候出错总是说类型不兼容,对反射这部分理解的不好,请赐教。
作者:
画饼
时间:
2013-5-28 17:51
import java.lang.reflect.Field;
import java.lang.reflect.Method;
class Z{
public static void main(String []args)throws Exception
{
Sum s=new Sum();
Class cla=s.getClass();
Method method=cla.getMethod("getAdd",int[].class);
int[] is=new int[]{1,2,3};
System.out.println(method.invoke(s,is));
}
}
class Sum{
public int getAdd(int ...args)
{
int sum=0;
for(int arg:args)
{
sum+=arg;
}
return sum;
}
}
作者:
画饼
时间:
2013-5-28 17:53
可变参数,可以传一个数组进去,会自动拆包。你那个错误是因为,可变参数不能直接用int的字节码!
作者:
袁梦希
时间:
2013-5-29 17:13
如果问题已经解决,请把帖子的类型改为已经解决,如果不会解决请看我的个性签名。
作者:
李润根
时间:
2013-5-29 17:41
1楼正解
public int getAdd(int ...args)
这个是可变参数
Method method=cla.getMethod("getAdd",int.class);
不能写成基本类型int.class,改成数组,试试吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2