Normálně používej Date. Jenom nikdy nevracej/neukládej odkaz na originál ale na kopii objektu. Něco jako:
class A {
private final Date datum;
public A (Date datum){
// null check by byl fajn :-)
this.datum = new Date(datum.getTime());
}
public getDatum(){
return new Date(datum.getTime());
}
}
A budeš mít jistotu, že nikdo nemá odkaz na objekt Date, který je ve fieldu třídy A. Takže ti ho nikdo nezmění pod rukama.