Java反射调用多个参数的方法

时间:2016-06-06 06:49:14

标签: java methods reflection

您好我正在使用Java反射来调用方法并将参数传递给方法。 这是示例代码

package com.tests;
public class base
{
void method1(String username,String Pwd)
{System.out.println("method with 2 parameters "+username+" "+pwd);
}
void method2(String username,String Pwd)
{
System.out.println("\n method2 with 2 parameters "+username+" "+pwd);
    }
void method3(String username,String Pwd)
{System.out.println("\n method3 with 2 parameters "+username+" "+pwd);}
}

用于调用方法的代码片段

    java.lang.reflect.Method method;
        try 
        {
         method= obj.getClass().getMethod(test,String.class,String.class);
         method.invoke(obj,"user1","pwd");
           } 
        catch (SecurityException e) 
        {System.out.println("SECURITY EXCEPTION :"+e);}
        catch (NoSuchMethodException e)
        {System.out.println("NoSuchMethodException EXCEPTION :"+e);}    

其中test =“method1”/“method2”/“method3”
obj是基类的对象
上面的代码抛出了NOSuchmethodException

1 个答案:

答案 0 :(得分:0)

如果您查看Class<?>的{​​{3}},我会看到getMethod(...)getMethods()仅返回公开成员方法。

在您的代码中,这些方法不公开,因此找不到它们。您想要使用的是getDeclaredMethod(...)

现在进行测试,它确实有效。