我写了一个程序,它必须要求使用方法(我使用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,则将其视为空数组。