MST

星途 面试题库

面试题:Java泛型编译时检查机制下自定义泛型类的边界检查

定义一个泛型类`GenericClass<T>`,要求`T`必须实现`Comparable`接口。请编写该类,并说明在编译时如何通过泛型的编译时检查机制来确保传入的类型符合要求。同时,在类中添加一个方法`compare(T a, T b)`,用于比较两个`T`类型的对象,在实现该方法时,如何利用编译时检查机制避免潜在的类型错误?
21.0万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
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 匹配。