Se le classi wrapper sono immutabili perchè questa istruzione funziona?
codice:*/ public static void main(String[] args) { Integer i=new Integer(2); i++; System.out.println(i); }
Se le classi wrapper sono immutabili perchè questa istruzione funziona?
codice:*/ public static void main(String[] args) { Integer i=new Integer(2); i++; System.out.println(i); }
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
conosco l'unboxing ma in questo caso non capisco cosa centra.
Quel codice è equivalente a questo:
codice:Integer i = new Integer(2); int temp = i.intValue(); temp++; i = Integer.valueOf( temp ); System.out.println( i );
Se provi a disassemblare il bytecode, lo vedi.
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
grazie mille !! che significa disassemblare il bytecode? quindi l'immutabilità si verifica soltanto nel passaggio come parametri?
Ultima modifica di linux_r; 21-07-2014 a 17:24
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
quindi l'immutabilità si verifica soltanto nel passaggio come parametri?
?
L'immutabilità (di qualunque classe "immutabile") è data dal fatto che la classe in questione (Integer, in questo caso) non possiede alcun metodo che permetta di modificare lo stato interno dell'oggetto: non ci sono metodi setter, né alcun altro metodo che permetta di modificarlo.
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza