问答详情
源自:5-2 项目实现(上)

根据方法名获取方法的值,类中出现了重载,怎么办

Method getMethod = c.getMethod(getMethodName);

我要是有两个相同名称,不同返回值的类型不同,这时候根据方法名获取的方法,就有两个方法了啊,就是说类中出现了重载,怎么办?


提问者:qq_云在风中_0 2016-05-30 21:03

个回答

  • 战旗TV
    2016-05-31 16:26:53
    已采纳

    在括号里方法名后边,在填一个实参,对应该方法的类型就行了

  • qq_云在风中_0
    2016-05-31 17:25:10

    	Demo mDemo = new Demo("abc");
            Class c = mDemo.getClass();
            Method method = c.getMethod("putOut", String.class);
            String string = (String) method.invoke(mDemo, "123");
            System.out.println(string);

    测试代码,可以通过

  • qq_云在风中_0
    2016-05-31 17:23:41

        public transient Method getMethod(String s, Class aclass[])
            throws NoSuchMethodException, SecurityException
        {
            checkMemberAccess(0, Reflection.getCallerClass(), true);
            Method method = getMethod0(s, aclass);
            if(method == null)
                throw new NoSuchMethodException((new StringBuilder()).append(getName()).append(".").append(s).append(argumentTypesToString(aclass)).toString());
            else
                return method;
        }

    哦,看了一下getMethod方法,才知道,后面可以跟参数列表类型