Stavo esplorando java riflessione API e ho incontrato seguente frammento di codiceJava Reflection uscita frammento
public class Main {
public static void main(String[] args) throws IllegalAccessException, NoSuchFieldException{
Field value=Integer.class.getDeclaredField("value");
value.setAccessible(true);
value.set(42, 43);
System.out.printf("six times seven %d%n",6*7);
System.out.printf("six times seven %d%n",42);
System.out.println(42);
}
}
uscita:
six times seven 43
six times seven 43
42
Ho letto la documentazione del metodo set che dichiara che imposta il valore del campo per l'oggetto dato. Ma non sono in grado di capire l'output del codice perché dovrebbe stampare 42 in tutti i casi.
Qualcuno può per favore dare una visione di ciò che sta accadendo nel codice?
http://www.dzone.com/snippets/reflection-integer-destroyer –