Leute,Java - Klonen Sie die Eigenschaft innerhalb Getter-Methode
ich durch Java beste Codierpraktiken hier erwähnt gehen
http://viralpatel.net/blogs/most-useful-java-best-practice-quotes-java-developers/
2. Zitat sagt,
Zitat 2: Niemals eine machen Instanz Felder der Klasse Öffentlichkeit
Ich stimme zu, das ist absolut richtig, aber ich blieb stecken, weil ich der Empfehlung des Schriftstellers nur wenige Zeilen unter diesem Zitat folgte.
Er sagt:
private String[] weekdays =
{"Sun", "Mon", "Tue", "Thu", "Fri", "Sat", "Sun"};
public String[] getWeekdays() {
return weekdays;
}
Aber das Schreiben Getter-Methode nicht genau unser Problem lösen. Das Array ist weiterhin zugänglich. Der beste Weg, um es unmodifizierbar zu machen, besteht darin, einen Klon des Arrays anstelle des Arrays selbst zurückzugeben. Somit wird die Getter-Methode zu
geändert wirdpublic String[] getWeekdays() {
return weekdays.clone();
}
Ich habe ich nie clone()
in jeder Getter-Methode von Java-Klasse verwendet.
Ich frage mich (wie es erwähnt wird, eine der guten Praktiken sein) -, warum innerhalb Getter-Methode ein should use
/shouldn't use
clone()
? und in welchen Szenarien?
Ist es eine gute Programmierpraxis für Java?
Dank
IMO - Für unveränderliche Objekte und primitive Datentypen ist kein Klonen erforderlich. Für alles andere, wenn wir wirklich wollen, dass unsere Daten sicher sind, müssen wir die Kopie und nicht das Original zurückgeben. –
Sie könnten 'Arrays.asList (Wochentage)' zurückgeben, die unveränderlich sind. – Jivings
@Jakings nicht wahr. Die Liste akzeptiert keine neuen Elemente, aber die Methode set() funktioniert. –