[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() + "()"); } }}