【问题标题】:Java Reflection to call methods with multiple parametersJava反射调用具有多个参数的方法
【发布时间】:2016-06-06 06:49:13
【问题描述】:

您好,我正在使用 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

【问题讨论】:

  • test 的值是多少?
  • 请注意:写“它不工作”的问题时,请提供所有相关信息。此外:请学习 java 编码风格指南。你的类名和变量名有点……全错了。类以大写开头,变量和参数不是。
  • 关于反射的一般提示:a) 不要使用它... b) 阅读可用的 javadoc/tutorials 非常非常小心。有很多东西可能会出错,从字段/方法的公开与非公开可见性开始......

标签: java methods reflection


【解决方案1】:

如果您查看javadocClass<?>,您会发现getMethod(...)getMethods() 只返回公共成员方法。

在您的代码中,这些方法不是公开的,因此无法找到。你想改用的是getDeclaredMethod(...)

现在测试了一下,效果很好。

【讨论】:

    猜你喜欢
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    相关资源
    最近更新 更多