问题描述
- 集成java.util.Date的困惑
-
一个类集成了java.util.Date
public class DBDate extends Date implements IDBDate {private static final long serialVersionUID = 1722199654569062027L; private Date date ; public DBDate(Date dateParam) { this.date = dateParam; } public String toString() { if(date == null) return null; if(String.valueOf(date).indexOf(":") > -1){ return DateUtil.formatDate(date, DateUtil.TIME_FORMAT); }else{ return DateUtil.formatDate(date, DateUtil.DATE_FORMAT); } }
}
然后写测试类。
public static void main(String[] args) {
Date date = new Date();
date.setTime(date.getTime() - Integer.MAX_VALUE);
System.out.println(DateUtil.formatDate(date, DateUtil.TIME_FORMAT));DBDate dbdate = new DBDate(date); System.out.println(DateUtil.formatDate(dbdate, DateUtil.TIME_FORMAT ) ); } 输出的结果不同了。
2015-03-25 04:59:42
2015-04-19 01:31:06第二个永远是当前时间。
是因为第二个输出,只是给DBDate的date变量赋值而已,
以上的代码第二个输出也要和第一个一样,应该怎么改造呢?
本来是想要实现Date接口的,但它是一个普通bean
解决方案
可以了。不需要变量date.直接从父类获取
解决方案二:
new DBDate().toString();
解决方案三:
DateUtil.formatDate是直接取传入对象的gettime的,和tostring没关系。
另外,继承后就是date,date的公共方法属性和转换都能使用。,没必要再弄个内部变量做date了,再定义一个date内部变量反而有问题。
时间: 2024-08-22 14:54:41