[英]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.