Wird empfohlen, öffentliche Zugriffsmodifikatoren für die Datenfelder in der finalen (unveränderlichen) Java-Klasse zu haben, auch wenn die Datenfelder nicht die Verweise auf veränderlichen Datentyp sind oder auf Datenfelder zugreifen sollen direkt, da Datenfelder im Konstruktor selbst definiert werden sollten, und somit alle Möglichkeiten, die interne Repräsentation der Klasse zu ändern, zunichte machen. Bitte vorschlagen?Zugriffsmodifikatoren in Java bei Verwendung mit unveränderbarer Klasse
Zum Beispiel:
public class MainApp {
public static void main(String args[]) {
Immutablesample immutablesample = Immutablesample.getInstance("akkhil");
System.out.println(" Before modification " + immutablesample.getName());
immutablesample.name = "gupta";
System.out.println(" After modification " + immutablesample.getName());
}
}
ist der aufrufende Code versucht, das Datenfeld zu ändern, indem sie direkt (ohne Zugriffsmodifikator) für die folgende Klasse Zugriff auf:
public final class Immutablesample {
private final String name;
private Immutablesample(String name){
this.name = name;
}
public String getName(){
return name;
}
public static Immutablesample getInstance(String name){
return new Immutablesample(name);
}
}
Wie wäre es, die machen Klasse anfällig für die Änderung der internen Repräsentation, wenn ich den Modifikator von privat auf öffentlich ändere private String name; zum öffentlichen String-Namen; seit das Objekt mit parametrisierten Konstruktor erstellt hat so hat unveränderliche Datenfelder, als warum ist es notwendig, Datenfelder privat zu machen?
Können Sie ein oder zwei Beispiele veröffentlichen? Ihr Mangel an Interpunktion und richtiger Terminologie macht es schwierig, die Frage zu verstehen. –
finden Sie alle Details hier: https://docs.oracle.com/javase/tutorial/essential/concurrency/imstrat.html – grsdev7
Nein. Datenfelder sollten immer privat und endgültig sein. Stellen Sie nur Getter zur Verfügung (die bei Bedarf auch defensive Kopien von veränderbaren Instanzen zurückgeben können) – TheLostMind