3 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以調(diào)用如下代碼的方法:
try {
Method method = emRequestResponse.getDeclaredMethod("method name", parameterTypes);
method.invoke(objectToInvokeOn, params);
} catch(Exception ex) {
System.out.println(ex.toString());
}

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
您的問(wèn)題的答案是 java 的REFLECTION API。
我建議switch case您使用字符串,因?yàn)楦鶕?jù)您的要求,我看到可以制作字符串final。
使用Method該類,您可以通過(guò)填充方法名稱和所需參數(shù)來(lái)調(diào)用方法。
假設(shè)您要調(diào)用的方法定義在名為T(mén)agElementsList.
private List invokeMethod(TagElementsList tagElementsList, String pageId) {
Method method = TagElementsList.class.getMethod("get"+pageId);
List returnList = (TagElementsList)method.invoke(tagElementsList);
return returnList;
}
因此,您可以通過(guò)以下調(diào)用從代碼中所需位置調(diào)用該invokeMethod方法,從而使該方法根據(jù)您的需要工作,考慮到上述方法是在與必須調(diào)用它的點(diǎn)相同的類中聲明的. 您當(dāng)然可以將它定義在不同的類中,并通過(guò)該類的實(shí)例調(diào)用對(duì)該方法的調(diào)用。
List list = invokeMethod(agent.getHeader().getTagElementList(), page.getid());
emRequestResponse.setTagElementList(list);

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以使用switch
over if-else
,switch
性能優(yōu)于if-else
.
切換性能會(huì)更好,因?yàn)榍袚Q時(shí)會(huì)有一次評(píng)估。一旦它評(píng)估了開(kāi)關(guān),它就知道需要執(zhí)行哪種情況,但如果是其他情況,它必須通過(guò)所有條件以防最壞的情況。
在大量條件的情況下,切換性能會(huì)更好,但對(duì)于較短的列表(只有兩個(gè)條件),它也可能會(huì)更慢
添加回答
舉報(bào)