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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

为什么获得Method object时不需指定回返类型?
是只要指定
了method名称和参数列,就一定指出了
一个独一无二的method。
是这个原因吗?
还是有其他原因??

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
不太理解你的问题要问的什么?是通过反射获取某个类中的某个方法吗?

如果是这样的话,是不需要指定返回值的。

例如 :
         public static void methodReflect() throws Exception
         {
                  String str = "hello";
  
                // getMethod()返回要获取的方法。"charAt"是方法名,int.class是方法参数
                Method method = String.class.getMethod("charAt", int.class);
  
              // 得到方法后,再用method的invoke()方法,调用获得的charAt()方法
             System.out.println(method.invoke(str, 1));
        }

getMethod(methodName,parameter)无需指定返回值类型。这里就要提一下函数重载。

函数的重载是,在同一个类中,允许有一个以上的同名函数,只要它们的参数个数或参数类型不同即可,与返回值类型无关。

因为即使有函数名和参数都相同,而返回值不同,也会报错的!因为调用者不知道到底该方法的返回值是什么。

所以,在通过上面的反射方法获取某个类的方法时,就不用指定返回值了!


评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

回复 使用道具 举报
因为我们是无法仅仅通过方法的返回值来区分不同方法的。例如,你要调用某个方法,假设好几个方法只有返回值不一样,其他的例如方法名,需求参数等都一样,那到底应该调哪个呢?没法确定,因为调用哪个都是合乎情理的,在计算机中是不允许出现这种难以抉择的情况的,当然也就不存在只有返回值类型不同的多个方法了。这样一来,也就决定了在使用反射获取某个方法时是不能通过方法的返回值来获取的,还是那句话,因为不存在只有返回值类型不同的而其他地方都相同的多个方法

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

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