gpt4 book ai didi

java - 为什么我可以使用 set 来更改私有(private)成员,但不能使用 =

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:55:55 25 4
gpt4 key购买 nike

这里我有点疑惑为什么我们可以用setter改变一个private成员却不能用“=”来改变。例如

public class Student {
private Date date;
private Integer age;
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}

public class HelloTest {

public static void main(String[] args) {
Student student = new Student();
student.getDate().setTime(1000);
//student.getAge()=100; not allowed
}
}

我不知道为什么我可以使用'.setTime(1000)'来更改日期,但不能使用'=100'来更改年龄。在我看来, getDate 和 getAge 都获得了对象引用。谢谢。

最佳答案

在第一个示例中,您返回一个对象,然后调用该对象的方法来更改其值(不是新对象)

在第二个例子中,你返回了一个不可变对象,然后尝试自动装箱来改变它的对象

关于java - 为什么我可以使用 set 来更改私有(private)成员,但不能使用 =,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34780361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com