Non puoi. Le variabili locali di un qualunque metodo(/costruttore) sono appunto LOCALI. NON sono visibili da altri metodi. Devi trovare altre strade dal punto di vista del "design" generale. Che quindi devi apprendere e capire meglio.
Un motivo pratico l'ho detto prima. Se la variabile di istanza è pubblica, tu NON hai controllo su chi/dove/come accede alle variabili. Non puoi imporre e garantire degli "invarianti" e se andiamo a livello più fine non puoi nemmeno gestire una eventuale sincronizzazione e quindi non potresti nemmeno rendere thread-safe la classe.
Nella Range che ho mostrato prima, mi basterebbe dichiarare quei 4 metodi come synchronized et voilà, la classe sarebbe thread-safe perlomeno rispetto all'uso di ciascun singolo metodo. Se min/max fossero pubbliche, questo non lo potresti garantire.
Inoltre c'è un discorso più ampio legato al concetto di information-hiding, cioè il nascondere informazioni che non sono (e "non dovrebbero") essere importanti all'esterno.
Domandati: è molto importante che qualcuno sappia della esistenza dei campi min/max? Se in futuro tu che es. avessi in gestione la classe Range volessi cambiare i nomi dei campi in valoreMin e valoreMax? Se sono privati puoi farlo, puoi cambiare i nomi (mantenendo i 4 metodi così come sono). Se sono pubblici, non puoi cambiarli senza che all'esterno qualcosa si "spacca" e debba poi essere corretto.
Se qualcosa è pubblico fa parte del "contratto" verso l'esterno della classe. E non puoi (non sempre facilmente, perlomeno) cambiarlo in futuro.
Morale della favola: nascondi il più possibile e non esporre (all'esterno) variabili di istanza se NON c'è un motivo davvero valido e impellente.


Rispondi quotando