与不可变 Class 一起使用时 Java 中的访问修饰符
Access Modifiers in Java when used with Immutable Class
是否建议对最终(不可变)java class 中的数据字段使用 public 访问修饰符,即使数据字段不是对可变数据类型的引用或我们是否应该直接访问数据字段,因为数据字段应该在构造函数本身中定义,从而消除所有更改 class 的内部表示的机会。
请推荐?
例如:
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());
}
}
是调用代码试图通过直接访问数据字段(不使用访问修饰符)来更改以下 class:
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,它如何使 class 易于更改其内部表示
私有字符串名称;到 public 字符串名称;
由于对象是使用参数化构造函数创建的,因此具有不可变的数据字段,那么为什么有必要将数据字段设为私有?
一般来说,显示 class 的内部表示是一个错误的决定,因此即使隐藏最终的不可变字段也会更好。如果您的 class 它类似于一个元组,其中所有成员都从外部使用,那么您只能显示诸如字段之类的字段。
要遵循的两个简单规则:
- 尽量让你的整体 class 达到 "immutable"。例如,仅通过构造函数设置 private final 字段。并且在使用 "incoming" 集合对象时,考虑为它们的内容创建一个 copy 以确保安全。
- 请记住,好的 OO 是关于公开 行为 ;而不是公开 数据 。意思是:你绝对 不 想要创建字段 public 除非你有充分的理由这样做。换句话说:你不希望其他class B因为class A中某些字段的内容而做某事。以及防止这种情况的方法: 将您的字段设为私有!
是否建议对最终(不可变)java class 中的数据字段使用 public 访问修饰符,即使数据字段不是对可变数据类型的引用或我们是否应该直接访问数据字段,因为数据字段应该在构造函数本身中定义,从而消除所有更改 class 的内部表示的机会。 请推荐?
例如:
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());
}
}
是调用代码试图通过直接访问数据字段(不使用访问修饰符)来更改以下 class:
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,它如何使 class 易于更改其内部表示 私有字符串名称;到 public 字符串名称; 由于对象是使用参数化构造函数创建的,因此具有不可变的数据字段,那么为什么有必要将数据字段设为私有?
一般来说,显示 class 的内部表示是一个错误的决定,因此即使隐藏最终的不可变字段也会更好。如果您的 class 它类似于一个元组,其中所有成员都从外部使用,那么您只能显示诸如字段之类的字段。
要遵循的两个简单规则:
- 尽量让你的整体 class 达到 "immutable"。例如,仅通过构造函数设置 private final 字段。并且在使用 "incoming" 集合对象时,考虑为它们的内容创建一个 copy 以确保安全。
- 请记住,好的 OO 是关于公开 行为 ;而不是公开 数据 。意思是:你绝对 不 想要创建字段 public 除非你有充分的理由这样做。换句话说:你不希望其他class B因为class A中某些字段的内容而做某事。以及防止这种情况的方法: 将您的字段设为私有!