使用一个变量设置两个Object.date属性会导致我出现问题

时间:2016-03-29 07:10:14

标签: java grails groovy gorm

我有一个域类x,其属性中包含 startdate enddate 。在我的服务中,我使用此代码设置了两个值 `

    def date = new Date()

    date.set(hourOfDay: 12, minute: 0, second: 0, year: 2012 , month: 0, date: 1)

    x.startDate = date

    date.set(hourOfDay: 12, minute: 0, second: 0, year: 12 , month: 11, date: 30)

    x.endDate = date`

但问题是它为两个属性提供相同的值( 1月1日),尽管我为它们指定了不同的值。

我尝试使用调试器来查看为什么会发生这种情况,并且首先它会为 startdate 分配正确的值,但是当更改date的值时,它也会更改 startdate <的值/ strong>(第4行)。可能的解决方案(解决方法)是创建两个日期变量,但我似乎无法理解为什么会发生这种情况。有人可以告诉我为什么会这样吗

1 个答案:

答案 0 :(得分:1)

你的解决方案是正确的。您需要单独的日期变量。

将日期分配给startDate或endDate属性时,您将设置对日期变量的引用。通过在两个属性中引用相同的日期变量,对日期变量的任何更改都会反映在两个属性中。