有没有办法将Date对象复制到另一个日期对象而不使用引用?

我有一个程序加载原始数据以供图表并将其存储在一个名为cRawGraph的类中。它然后格式化这些数据并将其存储在另一个名为cFormatGraph类中。 有没有办法将存储在cRwGraph一些日期对象复制到存储在cRwGraph中的日期对象而不使用引用? 我查看了Oracle的文档,并没有看到一个构造函数会接受一个日期对象,或者任何方法数据都会实现这一点。

代码段:

 do{ d=rawData.mDate[i].getDay(); da=rawData.mDate[i]; datept=i; do{ vol+=rawData.mVol[i]; pt+=rawData.mPt[i]; c++; i++; if (i>=rawData.getSize()) break; } while(d==rawData.mDate[i].getDay()); // this IS NOT WORKING BECOUSE IT IS A REFRENCE AND RawData gets loaded with new dates, // Thus chnaging the value in mDate mDate[ii]=da; mVol[ii]=vol; mPt[ii]=pt/c; if (first) { smallest=biggest=pt/c; first=false; } else { double temp=pt/c; if (tempbiggest) biggest=temp; } ii++; } while(i<rawData.getSize()); 

您可以使用getTime()并将其传递给Date(time)构造函数。 这只是必需的,因为Date是可变的。

 Date original = new Date(); Date copy = new Date(original.getTime()); 

如果您正在使用Java 8,请尝试使用使用不可变对象的新java.time API 。 所以不需要复制/克隆。

如果可能,请尝试切换到使用Joda Time而不是内置Date类型。

http://www.joda.org/joda-time/

来自Joda的DateTime有一个复制构造函数,由于DateTime不可变,因此通常更好用。

否则你可以尝试:

 Date newDate = new Date(oldDate.getTime()); 

使用Java 8,您可以使用以下nullsafe代码。

 Optional.ofNullable(oldDate) .map(Date::getTime) .map(Date::new) .orElse(null)