Ho una classe che utilizza XML e reflection per restituire Object
in un'altra classe.Un modo per richiamare un metodo privato?
Normalmente questi oggetti sono campi secondari di un oggetto esterno, ma occasionalmente è qualcosa che voglio generare al volo. Ho provato qualcosa di simile ma senza successo. Credo che sia perché Java non ti permetterà di accedere ai metodi di riflessione 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);
Se il metodo fornito è private
, non si effettua con un NoSuchMethodException
. Potrei risolverlo creando il metodo public
o facendo in modo che un'altra classe la ricava.
Per farla breve, mi chiedevo se c'era un modo per accedere a un metodo private
tramite riflessione.
quando ho fatto questo in passato, ho anche chiamato method.setAccessible (false) dopo aver chiamato il metodo, ma non ho idea se questo è necessario o meno. – shsteimer
No, quando si imposta l'accessibilità, si applica solo a quell'istanza. Finché non lasci che quel particolare oggetto Method sfugga al tuo controllo, è sicuro. – erickson
Mi capita assolutamente di amarti amico. Risposta stupefacente + codice errato == Non è un brutto giorno. – droope