有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用反射调用带有String[]参数的方法

我使用了StackOverflow和其他网站上的所有建议。我正在尝试使用反射调用一个方法。下面是我的方法的代码:

public void my_method(String[] args) {

    for(int i=0; i<args.length; i++)
    {
        System.out.println(args);
    }
}

下面是我用于反射的代码

Class[] paramStringArray = new Class[1];    
paramStringArray[0] = String[].class;
String[] argu = {"hey", "there"};

Method method = cls.getDeclaredMethod("my_method", paramStringArray);
method.invoke(obj, new Object[]{argu});

我的问题是,当我运行程序时,我看到输出打印为:[Ljava.lang.String;@70a6aa31 [Ljava.lang.String;@70a6aa31

我已经尝试了我能找到的所有建议。有人能帮我吗

谢谢


共 (2) 个答案

  1. # 1 楼答案

    您需要打印args[i],而不是打印您拥有的内容

    此外,应该使用new String[]而不是new Object[]来调用该方法

  2. # 2 楼答案

    方法my_method()作为参数接收String[],而不是String。您正在调用不同的方法。代码应该如下所示:

    paramString[0] = String[].class;
    Method method = cls.getDeclaredMethod("my_method", paramString);
    

    要调用它,请将String[]作为参数传递:

    method.invoke(obj, new String[]{"x"});
    

    此外,my_method()中的循环体应该引用每个元素的位置,而不是数组本身:

    System.out.println(args[i]);