Date类是Comparable类的子类吗?Comparable类变量可以引用Date类的实例吗?
在以下程序中max方法的参数的返回值均定义Object没有问题,但是定义为Comparable时Date date = max(new Date(),new Date());这一句却提示“类型TestComparableMax中的方法max(Comparable ,Comparable )对于参数(Date,Date)不适用”。我的问题是:Date类已经实现了Comparable接口,那么Comparable接口就类似于Date的一个父类,那么max(Comparable ,Comparable )方法中的Comparable类型变量就应该可以引用实现该接口的类的实例new Date(),可是此处为什么不可以?而String类却可以?
TestComparableMax {
public static Comparable max(Comparable o1,Comparable o2){
if(o1.compareTo(o2) > 0)
return o1;
else
return o2;
}
public static void main(String[] args){
String s = (String)max( "abc ", "efg ");
Date date = max(new Date(),new Date());
}
}
------解决方案--------------------你不妨再试试看,至少我在eclipse里面试了一下是可以的
另外注意一下
import java.sql.Date;是不可以的
import java.util.Date;是可以的
------解决方案--------------------Date date = (Date)(max(new Date(),new Date()));
if A extends/implements B..
B b = new A().--> it 's right.
B b;
A a = (A)b --> 你要做一个强制转换。
class 小鸟 extends Flyable
说明 小鸟是可以飞的..Flyable f = new 小鸟().
可是 可以飞的是小鸟..小鸟 bird = new Flyable().你觉提这对吗?难道飞机不能飞么?凭什么把一个可以飞的东西确定为小鸟(赋值给小鸟对象)?
哦,原来你指的可以飞的东西就是小鸟呀。==> 小鸟 bird = (小鸟)(new Flyable()).
特指(强制转换)一下就好了。