Java反射,获取方法append并使用它



我写了一个程序,它必须要求使用方法(我使用java.lang.StringBuffer.append),然后它必须说明它最大需要多少个参数,我认为在这种情况下是3。用户可以键入他想要的所有字符串的任意数量的参数,然后程序将它们附加并打印出字符串。但是出了问题,我就是没有发现错误。

import java.lang.reflect.*;
import tio.*;
public class MethodExecutor {
    public static void main(String [] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException
    {
        String input = "";
        String input1 = "";
        String input2 = "";
        String argumenten[];
        int aantal = 0;
        System.out.println("What method to invoke?");
        input = Console.in.readLine();
        input1 = input.substring(0,input.lastIndexOf("."));
        input2 = input.substring(input.lastIndexOf(".")+1,input.length());
        System.out.println(input2);
        Class<?> c = Class.forName(input1);
        Method m = c.getMethod(input2, null);
        Class<?>[] parameterTypes = m.getParameterTypes();
        System.out.println("Needs max " + parameterTypes.length + " parameters.");
        System.out.println("How many will you provide?");
        aantal = Console.in.readInt();
        argumenten = new String[aantal];
        for(int i = 0; i < argumenten.length; i++)
            argumenten[i] = Console.in.readLine();
        System.out.println("Success");
        }
}

Tio只是一个获取控制台输入的库。

有人能帮忙吗?

亲切问候,

我认为这。。。

Method m = c.getMethod(input2, null);

将查找一个名称存储在input2中的方法,该方法不带参数。

相反,我认为您需要在类上搜索每个方法,然后打印出名称匹配的方法的长度

(来自getMethod的javadoc:)

返回一个方法对象,该对象反映由该class对象表示的类或接口的指定公共成员方法。name参数是一个字符串,用于指定所需方法的简单名称。parameterTypes参数是Class对象的数组,这些对象按声明的顺序标识方法的形式参数类型。如果parameterTypes为null,则将其视为空数组。

相关内容

  • 没有找到相关文章