接受通过继承实现 Comparable 的类型的通用类型

时间:2021-04-15 18:21:10

标签: java generics

如何在不使用原始类型的情况下让 DataStructure 接受类型 B

public class Main {
    public static void main(String[] args) {
        DataStructure<A> bo = new DataStructure<>();

        //This doesn't compile because of T extends Comparable<T> 
        DataStructure<B> bst = new DataStructure<>();
    }
}

class DataStructure<T extends Comparable<T>> {
}

abstract class A implements Comparable<A> {
}

abstract class B extends A /*implements Comparable<B> - illegal*/ {
}

我可以将 DataStructure 签名更改为:class DataStructure<T extends Comparable> 但随后我收到有关原始类型的警告。我不能做 class DataStructure<T extends Comparable<? extends T>> 因为当 T == B? extends T 显然是错误的。

1 个答案:

答案 0 :(得分:2)

DataStructure<T extends Comparable<? super T>>
相关问题