Ho la struttura e le classi seguenti.Accesso Java alla proprietà privata tramite Reflection
Ho l'oggetto ClassC e sto cercando di ottenere fieldX tramite reflection.
Class partypes[] = new Class[0];
Object arglist[] = new Object[0];
Method getContextMethod = ClassC.class.getMethod("getFieldX",partypes);
String retValue = (string) getContextMethod.invoke(classCInstance, arglist);
Ma sto ricevendo eccezione NoSuchMethod.
Ho provato anche a raggiungere direttamente il campoX. Ma questa volta ricevo l'eccezione NoSuchField.
Field reqField = ClassC.class.getDeclaredField("fieldX");
reqField.setAccessible(true);
Object value = reqField.get(classCInstance);
String retValue = (string) value;
Qual è la cosa che sto facendo male? C'è un modo per ottenere questo campoX dall'oggetto ClassC?
Soluzione: (grazie mille vz0 per la soluzione);
l'accesso diretto al campo privato:
Field reqField = ClassA.class.getDeclaredField("fieldX");
reqField.setAccessible(true);
String value = (String)reqField.get(clazzc);
metodo di chiamata;
Class partypes[] = new Class[0];
Object arglist[] = new Object[0];
Method getContextMethod = ClassA.class.getDeclaredMethod("getFieldX",partypes);
getContextMethod.setAccessible(true);
System.out.println((String)getContextMethod.invoke(clazzc, arglist));
Ciò non funzionerà poiché il metodo non è dichiarato in 'ClassC'. – BalusC
Typo modificato, thx. – vz0
Chiarimento aggiunto. – vz0