最佳做法是不公开Object(Entity)的内部引用.因此,如果一个Object有一个类型的字段,java.util.Date那么例如该字段的getter应该不返回原始日期而是它的副本.
但是对于java.util.Date,有两种常见的方法来创建该副本:
(Date) originalDate.clone()new Date(originalDate.getTime()) 我的问题是,哪种方式更好,为什么?
我有一个程序加载原始数据以供图表并将其存储在一个名为的类中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());
Run Code Online (Sandbox Code Playgroud)