读书人

[Java] 获取种中的非公有方法

发布时间: 2012-09-01 09:33:03 作者: rapoo

[Java] 获取类中的非公有方法
使用AccessibleObject.isAccessible()是无法判断类中方法是否为非公有的,可以参考Java的文档[1],可以发现isAccessible()只是用来返回accessible标记的当前值。这篇文档[2]很好地阐述了accessible的用法。

如果要找出类中的非公有方法,可以用下面这段代码:

for (Method method : clazz.getDeclaredMethods()) {    if (method != null) {        try {            clazz.getMethod(method.getName(), method.getParameterTypes());        } catch (NoSuchMethodException e) {            logger.warn("non-public method: " + method.getDeclaringClass().getName() + "." + method.getName() + "()");        }    }}


getDeclaredMethods()返回类的public,protected及private方法,而getMethod()只返回公有方法。

因此如果在getDeclaredMethods中找到,而在getMethod中获取不到的方法,可判断为非公有方法。

请高手给出更高效的方法。


[1] http://docs.oracle.com/javase/1.3/docs/api/java/lang/reflect/AccessibleObject.html

[2] http://bbs.itheima.com/thread-2668-1-1.html

读书人网 >编程

热点推荐