データフィールドが可変データ型への参照ではなくても、最終(不変)Javaクラスのデータフィールドにパブリックアクセス修飾子を持つことをお勧めしますか?データフィールドはコンストラクタ自体で定義されるはずであるため、クラスの内部表現を変更する可能性はすべて無くなります。 お勧めしますか?例えば不変クラスで使用されるJavaのアクセス修飾子
:
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());
}
}
は、次のクラスのために(アクセス修飾子なしで)直接アクセスしてデータフィールドを変更しようと、呼び出し元のコードです:
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);
}
}
それはどのようになるだろう私が変更をプライベートからパブリックに変更すると、内部表現が変更される傾向があります。 プライベートString name;パブリックString nameに; オブジェクトがパラメータ化されたコンストラクタを使用して作成されたため、不変のデータフィールドがあるため、なぜデータフィールドをプライベートにする必要があるのですか?
例を1つまたは2つ投稿できますか?句読点や適切な用語を使用していないため、この質問を理解することが難しくなります。 –
すべての詳細はここにあります。https://docs.oracle.com/javase/tutorial/essential/concurrency/imstrat.html – grsdev7
No.データフィールドは常にプライベートで最終的なものでなければなりません。 getterのみを提供します(必要に応じて変更可能なインスタンスの守備的なコピーを返すことができます) – TheLostMind