3 回答
TA贡献1796条经验 获得超4个赞
您可以调用如下代码的方法:
try {
Method method = emRequestResponse.getDeclaredMethod("method name", parameterTypes);
method.invoke(objectToInvokeOn, params);
} catch(Exception ex) {
System.out.println(ex.toString());
}
TA贡献1874条经验 获得超12个赞
您的问题的答案是 java 的REFLECTION API。
我建议switch case您使用字符串,因为根据您的要求,我看到可以制作字符串final。
使用Method该类,您可以通过填充方法名称和所需参数来调用方法。
假设您要调用的方法定义在名为TagElementsList.
private List invokeMethod(TagElementsList tagElementsList, String pageId) {
Method method = TagElementsList.class.getMethod("get"+pageId);
List returnList = (TagElementsList)method.invoke(tagElementsList);
return returnList;
}
因此,您可以通过以下调用从代码中所需位置调用该invokeMethod方法,从而使该方法根据您的需要工作,考虑到上述方法是在与必须调用它的点相同的类中声明的. 您当然可以将它定义在不同的类中,并通过该类的实例调用对该方法的调用。
List list = invokeMethod(agent.getHeader().getTagElementList(), page.getid());
emRequestResponse.setTagElementList(list);
TA贡献1744条经验 获得超4个赞
您可以使用switchover if-else,switch性能优于if-else.
切换性能会更好,因为切换时会有一次评估。一旦它评估了开关,它就知道需要执行哪种情况,但如果是其他情况,它必须通过所有条件以防最坏的情况。
在大量条件的情况下,切换性能会更好,但对于较短的列表(只有两个条件),它也可能会更慢
添加回答
举报
