У меня есть класс, который использует XML и отражение, чтобы вернуть Object
s другому классу.Любой способ вызвать частный метод?
Обычно эти объекты являются подполями внешнего объекта, но иногда это то, что я хочу генерировать «на лету». Я пробовал что-то вроде этого, но безрезультатно. Я считаю, это потому, что Java не позволит вам получить доступ к private
методам для отражения.
Element node = outerNode.item(0);
String methodName = node.getAttribute("method");
String objectName = node.getAttribute("object");
if ("SomeObject".equals(objectName))
object = someObject;
else
object = this;
method = object.getClass().getMethod(methodName, (Class[]) null);
Если метод при условии, является private
, он терпит неудачу с NoSuchMethodException
. Я мог бы решить это, выполнив метод public
или сделав из него другой класс.
Короче говоря, мне просто интересно, есть ли способ получить доступ к методу private
через отражение.
Когда я это делал в прошлом, я также вызвал метод.setAccessible (false) после вызова метода, но я понятия не имею, нужно ли это или нет. – shsteimer
Нет, когда вы устанавливаете доступность, оно применяется только к этому экземпляру. Пока вы не позволяете этому конкретному методу выйти из своего контроля, это безопасно. – erickson
Я абсолютно любуюсь любовью с тобой. Удивительный ответ + плохой код == Не так плохой день. – droope