面试题答案
一键面试public class GenericClass<T extends Comparable<T>> {
public int compare(T a, T b) {
return a.compareTo(b);
}
}
在编译时,通过在定义泛型类 GenericClass
时使用 T extends Comparable<T>
来确保传入的类型 T
必须实现 Comparable
接口。这就是泛型的编译时检查机制。在实现 compare
方法时,由于已经通过 T extends Comparable<T>
限定了 T
类型必然实现了 Comparable
接口,所以 a.compareTo(b)
这种调用就不会出现潜在的类型错误,因为编译器能在编译阶段就确保 a
一定有 compareTo
方法,并且其参数类型与 b
匹配。