你可以使用反射调用私有方法。修改已发布代码的最后一位:
Method method = object.getClass().getDeclaredMethod(methodName);method.setAccessible(true);Object r = method.invoke(object);
有几个警告。首先,
getDeclaredMethod将仅查找在
current中声明的方法
Class,而不继承自超类型。因此,如有必要,遍历具体的类层次结构。其次,
SecurityManager可以防止使用该
setAccessible方法。因此,它可能需要以
PrivilegedAction(使用
AccessController或
Subject)运行。



