我写了一个程序,它必须要求使用Method(我使用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只是一个获取控制台输入的库。
有人可以帮忙吗?
亲切的问候,
答案 0 :(得分:2)
我认为这......
Method m = c.getMethod(input2, null);
...将寻找一个名称存储在input2中的方法,该方法不带参数。
相反,我认为您需要在类上搜索EVERY方法,然后打印出匹配名称的方法的长度
(来自getMethod的javadoc:)
返回一个Method对象,该对象反映此Class对象所表示的类或接口的指定公共成员方法。 name参数是一个String,指定所需方法的简单名称。 parameterTypes参数是一个Class对象数组,它按声明的顺序标识方法的形式参数类型。 如果parameterTypes为null,则将其视为空数组。