我得到了一个程序,它加载原始数据用于制图,并将其存储在一个名为cRawGraph
的类中。然后,它格式化此数据,并将其存储在另一个名为cFormatGraph
的类中。是否有办法将存储在cRwGraph
中的一些日期对象复制到存储在cFormattedGraph
中的日期对象,而不使用引用?我查看了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 (temp<smallest)
smallest=temp;
if (temp>biggest)
biggest=temp;
}
ii++;
} while(i<rawData.getSize());
4条答案
按热度按时间uxhixvfz1#
可以使用getTime()并将其传递给Date(time)构造函数,这只是因为Date是可变的。
如果你使用的是Java8,试着使用新的java.time API,它使用immutable objects,所以不需要复制/克隆。
ddarikpa2#
在Java 8中,您可以使用以下nullsafe代码。
x9ybnkn63#
如果可能,尝试切换到使用Joda时间,而不是内置的日期类型。
http://www.joda.org/joda-time/
来自Joda的DateTime有一个复制构造函数,由于DateTime是不可变的,因此通常更好用。
否则,您可以尝试:
gcmastyq4#
Date d = (Date) oldDate.clone()
将克隆当前日期,然后将对象大小写设置为Date