我有一个这样的课程:
public class DateS extends Date {
public DateS yesterday(){
Calendar cal = Calendar.getInstance();
cal.setTime(this);
cal.add(Calendar.DAY_OF_YEAR, -1);
return (DateS) cal.getTime();
}
}
它可以成功构建。在运行时,当我致电date.yesterday()
时,会抛出Cannot cast 'java.util.Date' to 'myproject.package.DateS'
。
我需要知道为什么以及如何解决这个问题。
答案 0 :(得分:3)
由于Calendar
未生成DateS
,因此它使用Date
的不同实现。
为了转换为DateS
,对象必须是DateS
的实例或该类的子级。由于Calendar
未返回DateS
的实例,因此无法将其转换为i
。它编译得很好,因为理论上它可以工作,如果返回的日期是正确的类型,编译器无法分辨。