如何使用java反射过滤方法

如何使用java反射过滤方法,java,reflection,Java,Reflection,我想从一个类中获取所有方法,但不包括继承的方法,例如:wait、toString、hash等 是否有一种内置的方法来执行此操作,或者我是否需要定义一个黑名单并对照它检查方法名?您可以忽略以下方法 for(Method method: clazz.getMethods()) { if(method.getDeclaringClass() == Object.class) continue; } 注意:这将包括在子类中重写的方法 如果您不想要任何继承的方法,可以使用 for(Method

我想从一个类中获取所有方法,但不包括继承的方法,例如:wait、toString、hash等


是否有一种内置的方法来执行此操作,或者我是否需要定义一个黑名单并对照它检查方法名?

您可以忽略以下方法

for(Method method: clazz.getMethods()) {
    if(method.getDeclaringClass() == Object.class) continue;

}
注意:这将包括在子类中重写的方法

如果您不想要任何继承的方法,可以使用

for(Method method: clazz.getDeclaredMethods()) {

使用
MyClass.getDeclaredMethods()

clazz.getDeclaredMethods()将提供由当前类定义的方法(从而有效地排除继承的方法)。然而,典型的模式是向上走类层次结构 并清除来自对象的数据,您可以使用这些数据

您只需声明w谓词,然后使用:

CollectionUtils.filter(collection, predicate);
这里收集的是一袋袋的方法。 谓词是接受列表中元素的逻辑函数