È comune nelle classi Java avere molti metodi getter e setter, uno per ogni variabile di classe del modello di dati. Mi rendo conto che molti IDE li creeranno per te, ma sto cercando di evitare questo disordine e di non avere tutti questi metodi nelle mie classi. Quindi, esiste un modo per accedere a una variabile in modalità read only al di fuori della classe (come se fosse public final), pur mantenendo l'accesso in scrittura all'interno della classe o sottoclasse in modo esclusivo (come se fosse privato o protetto).In Java, c'è un'alternativa migliore ai metodi getter e setter?
L'unica pseudo-soluzione che ho trovato è una classe base (o interfaccia con metodi predefiniti) che ha un metodo get (String variableName) che quindi ottiene i campi della classe tramite riflessione e restituisce quello appropriato . Lo svantaggio è che per farlo funzionare, le variabili devono essere pubbliche, quindi solo per convenzione soddisfa i miei requisiti (in quanto nella classe di estensione/implementazione che ha le variabili a cui voglio accedere, chiamo solo il metodo get da al di fuori della classe e non implementare un metodo set). La cosa principale che non mi piace è che se cambia un nome di variabile, i chiamanti dei metodi get non causano errori del compilatore, poiché il nome della variabile è solo una stringa hardcoded.
Qualcuno ha un'idea migliore?
Sì. Ho un'idea migliore - * per favore non farlo *. * Reflection * è terribilmente lento. E non avendo setter/getter, rompi * l'incapsulamento * e * l'astrazione *. E se usi framework come * Spring *, avrai bisogno di setter. – TheLostMind
Dovresti leggere una volta 'Effective java di Joshua Bloch'. – Prashant
Se vuoi evitare il disordine, non scrivere getter e setter a meno che tu non ne abbia effettivamente bisogno. –