我有4种不同的方法,只有一个需要一个参数:JAVA反射API如何知道将参数传递给哪个方法?
foo1(){}
foo2(){}
foo3 (String data) {}
foo4(){}
我调用使用Java反射API这些方法。我的代码看起来像这样的时刻:
Mymethod method = new ActionKeyWords();
Method [] methods = method.getClass().getDeclaredMethods();
for (Method s : methods) {
if (s.getName().contains("foo3")) {
System.out.println("Executing method: " + s.getName());
s.invoke(s.getName(),"data");
else
System.out.println("Executing method: " + s.getName());
s.invoke(s.getName());
}
}
你可以看到,我想提出一个控制,看看这些方法的名称是foo3调用方法之前。这是因为该方法是我想要传递参数的唯一方法。如果我删除if语句,我收到了"java.lang.IllegalArgumentException: wrong number of arguments".
否则怎么会在API知道哪些功能我想一个参数传递给?目前只有foo3需要一个参数,但是如果foo98也需要这个参数。
我为什么选择反射API的原因是在我的代码摆脱无休止的if语句的。
这是唯一的解决方案吗?有没有更聪明的方法来解决这个问题?
反射api不知道。运行时出现错误。反思并不是摆脱if-else的解决方案。你需要重新考虑你的设计 – sidgate
通常反射操作是昂贵的,你应该只使用反射节约和作为最后的手段。如果您提出了一个更好的背景,那么您可能会提出一个更好的解决方案。 – nickb
'JAVA反射API如何知道将参数传递给哪个方法?'java反射api不知道将参数传递给哪个方法。你在说明方法名称和参数,你知道它 –