是否建议在final(Immutable)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);
}
}
如果我将修饰符从private更改为public,它将如何使类更容易获得其内部表示 私有字符串名称; to public String name; 由于对象是使用参数化构造函数创建的,因此具有不可变数据字段,为什么必须将数据字段设为私有?
答案 0 :(得分:2)
要遵循两条简单的规则:
答案 1 :(得分:1)
一般来说,显示一个类的内部表示是一个错误的决定,所以如果隐藏最终的不可变字段会更好。如果您的类类似于元组,那么您只能显示诸如字段之类的元素,其中所有成员都是从外部使用的。