gpt4 book ai didi

java - java中的Get/Set及引用

转载 作者:行者123 更新时间:2023-12-01 08:06:32 32 4
gpt4 key购买 nike

获取/设置方法可以保护我的类字段。

但是由于 Java 正在使用引用,所以我的私有(private)字段仍然暴露......

例如

private Date d;

Date getDate(){
return d;
}

void setDate(Date inD){
//Checks for inD
d = inD;
}


//Still the issue is

getDate().setHours(xyz);

正确的做法是什么?因为我不想在不使用 setDate 的情况下更改我的日期。

最佳答案

Because i dont want to change my Date without using setDate.

那么您不应该在 get 方法中返回对可变对象的引用。例如:

private Date d;

Date getDate() {
// Return a reference to an independent copy of the original data
return new Date(d.getTime());
}

void setDate(Date inD) {
// Checks for inD
d = inD;
}

更好的方法(IMO)是为您的字段使用不可变类型 - Joda Time API 是一个更简洁的日期/时间库并且它具有大量不可变类型。

当然,这只是一个例子 - 在其他情况下,您可能希望在可变对象上返回不可变的 View (您通常会避免自己改变),以避免必须复制每次 get 调用都会产生大量数据。

关于java - java中的Get/Set及引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21229489/

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