[Java] 获取类中的非公有方法_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > [Java] 获取类中的非公有方法

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

 2012/2/27 9:38:12  阿男bluedash  程序员俱乐部  我要评论(0)
  • 摘要:使用AccessibleObject.isAccessible()是无法判断类中方法是否为非公有的,可以参考Java的文档[1],可以发现isAccessible()只是用来返回accessible标记的当前值。这篇文档[2]很好地阐述了accessible的用法。如果要找出类中的非公有方法,可以用下面这段代码:for(Methodmethod:clazz.getDeclaredMethods()){if(method!=null){try{clazz.getMethod(method
  • 标签:方法 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

发表评论
用户名: 匿名