有没有办法将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)