Единственный способ получить доступ к методу private
класса, если реализация класса не предоставляет такой опции и если эта реализация не может быть изменена, - это отражение.
Предполагая, что method
функция класса A
имеет тип возвращаемого значения String
, простой способ сделать это -
public static String invokeMethod(A object, String data) throws Exception {
Method method = A.class.getDeclaredMethod(“method”, String.class);
method.setAccessible(true);
return (String) method.invoke(object, data);
}
Поскольку рассматриваемый метод Class A
не является статическим, необходимо указывать ссылку на объектиспользуется для доступа к нему, с отражением или без него, например
A object = new A(); // Create object of type A
String data = “...”; // Specify data input
String result = invokeMethod(object, data); // Call method
Если такой объект типа A
не может быть создан или если вызывающая сторона не хочет передавать invokeMethod
ссылку на такой объектобъект, единственная оставшаяся опция на самом деле переписывает функцию method
, вне Class A
.