gpt4 book ai didi

java - Spring setters/getters 和可变变量

转载 作者:行者123 更新时间:2023-11-30 09:52:50 25 4
gpt4 key购买 nike

让我们提议我有以下类(class)

    Public MyClass{

Date date;

//Mutable getters and setters

public Date getdate(){
retrurn date;
}

public Date setdate(Date date)
{date = date;}

//Now immutable setter and Getters

public Date getImmutableDate{
return new Date(date.getDate());
}

public void setImmutableDate(Date mydate)
{
date = new Date(mydate.getDate());
}
}

为 Spring 或 Hibernate Framework 使用可变的 getter 和 setter 并为我的自定义编码使用不可变的 setter 和 getter 是否是一种好的做法。我害怕的是以下内容:

MyClass myclass = new MyClass();
//assuming that item date was initalized some how.
Date currentDate = myClass.getdate();
currentDate.setMonth( currentDate.getMonth() + 1 );

现在发生了什么事,我刚刚更改了 myClass 对象中的 date 变量的值,它可能是系统错误的主要根源。

我说的对吗?我也可以为 Spring/Hibernate 使用不可变的 getter 和 setter 吗?

最佳答案

请注意,如果您提供可变的 setter 和 getter,它最终会被人们使用。所以这不是一个好的选择。

这个问题与spring和hibernate不是特别相关,而是与API设计有关。 Josh Bloch 建议 - “最小化可变性”。但这意味着您应该使用不可变对象(immutable对象),而不是在每次获取对象时都创建实例。

上面的解决方案是使用joda-timeDateTime对象,它是不可变的。

关于java - Spring setters/getters 和可变变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4117208/

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