簡體   English   中英

忽略區分大小寫的“methodName”以獲取Java中的Class方法

[英]Ignore case-sensitive “methodName” for getting a method of a Class in Java

我希望以這種方式得到一個類的方法:

int value = 5;
Class paramType = value.getClass();
String MethodName = "myMethod";
Class<?> theClass = obj.getClass();
Method m = theClass.getMethod(MethodName, paramType);

是否可以忽略MethodName區分大小寫? 例如,如果theClass有一個名為foo的方法,如何在MethodName=fOO找到它?

Java區分大小寫,因此沒有這樣的內置方法。 但是,您可以通過迭代所有方法並檢查其名稱和參數類型來自行實現它:

public List<Method> getMethodsIgnoreCase
    (Class<?> clazz, String methodName, Class<?> paramType) {

    return Arrays.stream(clazz.getMethods())
                 .filter(m -> m.getName().equalsIgnoreCase(methodName))
                 .filter(m -> m.getParameterTypes().length ==  1)
                 .filter(m -> m.getParameterTypes()[0].equals(paramType))
                 .collect(Collectors.toList());
}

注意:此方法查找具有與給定類型匹配的單個參數的方法,以匹配OP中的要求。 它可以很容易地推廣到接收參數類型的列表/數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM