A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 381946250 中级黑马   /  2013-5-28 17:36  /  1429 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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;
}
}
不知道为什么编译的时候没有错误,但是在运行的时候出错总是说类型不兼容,对反射这部分理解的不好,请赐教。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

4 个回复

倒序浏览
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;
}
}

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
381946250 + 1 赞一个!
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
可变参数,可以传一个数组进去,会自动拆包。你那个错误是因为,可变参数不能直接用int的字节码!
回复 使用道具 举报
如果问题已经解决,请把帖子的类型改为已经解决,如果不会解决请看我的个性签名。
回复 使用道具 举报
1楼正解

public int getAdd(int ...args)
这个是可变参数

Method method=cla.getMethod("getAdd",int.class);
不能写成基本类型int.class,改成数组,试试吧

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
袁梦希 + 1 很给力!
381946250 + 1 谢谢!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马