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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁豹新 初级黑马   /  2012-6-19 12:39  /  4506 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package cn.itcast.day1;
import java.lang.reflect.Method;
public class ReflectMethodVoidParamerty {

        /**
         * @param args
         */
        public static void main(String[] args)throws Exception {
                // TODO Auto-generated method stub
                String str="abc";
                Method methodLength=
Class.forName("java.lang.String").getMethod("length",void.class);               
Object len=methodLength.invoke(str);
System.out.println(len);
//如果有参数为int,getMethod方法中的第二个参数是int.class,为什么函数
//有参数时,getMethod方法中的第二个参数不能是 void.class 呢?

评分

参与人数 1技术分 +1 收起 理由
职业规划-刘倩老师 + 1 加油!!!

查看全部评分

3 个回复

倒序浏览
这个问题和函数的返回值是一样的,如 int f(int a,int b)这个方法的返回值类型为int ,void f(int a,int b) 表示这个方法的返回值为void ,也就是无返回值。需要不需要返回值由你的程序定义。
同理,有参数为int,自然就是int.class,有参数的时候你当然就不能用void.class了
回复 使用道具 举报
public Method getMethod(String name, Class<?>... parameterTypes)  第二个参数是个可变参数,你可以当成数组理解,就是new Class[]{},里边是你的参数,有参数里边填上就可以了,没有就是个空数组,里边不是返回类型,是你要调用的方法需要的参数,举个例子 public void addUser(String username, int age)  你调用的时候就应该这么写;
getMethod("addUser", new Class[]{String.class, int.class});
回复 使用道具 举报
本帖最后由 孙峰 于 2012-6-19 13:36 编辑

         例子String 中有 charAt(int a)方法,意思是取出 a脚标的元素,  那么反射中取该方法就要用 Method  method=String.class.getMethod("charAt", int.class),这里第一个参数“charAt”是指你要获得的方法名。 第二个参数"int.class"是指你要获取的方法 : charAt()的参数。
     当获取的方法是一个空参数时,第二个就参考 可变参数里,写个空的  new Class[]{},就行,   要是多参的话就写;new Class[]{类型1.cass,类型2.class,类型3.class}

点评

学习了!  发表于 2013-3-29 09:33
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马