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

Ted*_*tel 13 java

我有一个程序加载原始数据以供图表并将其存储在一个名为的类中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)

Ada*_*dam 37

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

Date original = new Date();
Date copy = new Date(original.getTime());
Run Code Online (Sandbox Code Playgroud)

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


Nic*_*aux 6

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

Optional.ofNullable(oldDate)
               .map(Date::getTime)
               .map(Date::new)
               .orElse(null)
Run Code Online (Sandbox Code Playgroud)