如何使用java反射过滤方法

时间:2011-12-05 12:50:00

标签: java reflection

我希望从类中获取所有方法但排除继承的方法,例如:wait,toString,hash等。

是否有内置方法可以执行此操作,还是需要定义黑名单并检查方法名称?

4 个答案:

答案 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);

集合是方法的包。 谓词是接受列表中元素的逻辑函数