与不可变类一起使用时Java中的访问修饰符
建议在最终(不可变)java类中为数据字段使用公共访问修饰符,即使数据字段不是对可变数据类型的引用,或者我们是否应该直接访问数据字段,因为数据字段应该在构造函数本身中定义,从而消除所有更改类的内部表示形式的机会。 请建议 例如:与不可变类一起使用时Java中的访问修饰符,java,immutability,Java,Immutability,建议在最终(不可变)java类中为数据字段使用公共访问修饰符,即使数据字段不是对可变数据类型的引用,或者我们是否应该直接访问数据字段,因为数据字段应该在构造函数本身中定义,从而消除所有更改类的内部表示形式的机会。 请建议 例如: public class MainApp { public static void main(String args[]) { Immutablesample immutablesample = Immutablesample.getInst
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,如何使类易于更改其内部表示
私有字符串名称;到公共字符串名称;
既然对象是用参数化构造函数创建的,所以有不可变的数据字段,那么为什么有必要将数据字段设置为私有呢?一般来说,显示类的内部表示形式是一个错误的决定,所以即使隐藏最后的不可变字段也会更好。如果类类似于元组,则只能显示例如字段,其中所有成员都是从外部使用的。遵循两条简单规则:
你能举一两个例子吗?你没有使用标点符号和合适的术语,这使得你很难理解这个问题。你可以在这里找到所有细节:没有。数据字段应该始终是私有的和最终的。仅提供getter(如果需要,它可以返回可变实例的防御性副本),您是否询问是否可以创建不可变的
final
字段public
?如果是的话,是的,就不变性而言这是可以的,但是正如@GhostCat指出的,在声明类之外公开字段还有其他问题。下面是代码片段: