这可能是有史以来最愚蠢的问题,但我认为这对新手来说完全是一个混乱.
String
不可改变的?StringBuilder
比首字母和副词更受欢迎?一个很好的例子(在Java中)将非常感激.
我的目标是使Java对象不可变.我上课了Student
.我用以下方式对其进行编码以实现不变性:
public final class Student {
private String name;
private String age;
public Student(String name, String age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public String getAge() {
return age;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,实现Student
课堂不变性的最佳方法是什么?
java中使用的技术使字符串不可变?
或者我如何使我的字符串类不可变.
我只是想知道这背后的逻辑.
如何创建不可变的星球以便名称不会改变?我很挣扎,因为我认为这是具有可变对象的不可变项目。如果我错了请纠正我。
每次我更改输出中的名称也会更改。我错过了什么吗?
我尝试将所有字段设为私有和最终(不在本例中),但我认为我缺少一些工作代码。
我知道 java.util.Date 已被弃用,但这只是示例。
import java.util.Date;
public final class Planet {
String name;
private final Date discoveryDate;
public Planet (String name, Date discoveryDate) {
this.name = name;
this.discoveryDate = new Date(discoveryDate.getTime());
}
public String getName()
return name;
}
public Date getDiscoveryDate() {
return new Date(discoveryDate.getTime());
}
public static void main(String [] args) {
Planet Earth = new Planet("Earth Planet", new Date(2020,01,16,17,28));
System.out.println("Earth");
System.out.println("------------------------------------");
System.out.println("Earth.getName: " + Earth.getName());
System.out.println("Earth.getDiscoveryDate: " + Earth.getDiscoveryDate());
}
}
Run Code Online (Sandbox Code Playgroud)