日期:2014-05-20  浏览次数:20712 次

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()).
特指(强制转换)一下就好了。