Вы можете вызвать частный метод с отражением. Изменение последнего бита опубликованного кода:
Method method = object.getClass().getDeclaredMethod(methodName);
method.setAccessible(true);
Object r = method.invoke(object);
Существует несколько предостережений. Во-первых, getDeclaredMethod
найдет только метод, объявленный в текущем Class
, но не унаследованный от супертипов. Итак, перейдите по иерархии конкретного класса, если это необходимо. Во-вторых, SecurityManager
может предотвратить использование метода setAccessible
. Таким образом, может потребоваться выполнить функцию PrivilegedAction
(используя AccessController
или Subject
).