繁体   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