我希望从类中获取所有方法但排除继承的方法,例如:wait,toString,hash等。
是否有内置方法可以执行此操作,还是需要定义黑名单并检查方法名称?
答案 0 :(得分:5)
您可以忽略
等方法for(Method method: clazz.getMethods()) {
if(method.getDeclaringClass() == Object.class) continue;
}
注意:这将包括在子类中重写的方法。
如果您不想使用任何继承方法,可以使用
for(Method method: clazz.getDeclaredMethods()) {
答案 1 :(得分:4)
使用MyClass.getDeclaredMethods()
答案 2 :(得分:0)
clazz.getDeclaredMethods()将提供当前类定义的方法(从而有效地排除继承的方法)。但是,典型的模式是走向类层次结构 并且来自Object
的那些人答案 3 :(得分:0)
您可以使用collection commons。
您只需要声明w谓词然后使用:
CollectionUtils.filter(collection, predicate);
集合是方法的包。 谓词是接受列表中元素的逻辑函数