代码之家  ›  专栏  ›  技术社区  ›  Yoda ESG

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

  •  0
  • Yoda ESG  · 技术社区  · 5 年前

    如何制作 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*/ {
    }
    

    我可以改变 数据结构 签名至: class DataStructure<T extends Comparable> 但随后我收到了关于原始类型的警告。我做不到 class DataStructure<T extends Comparable<? extends T>> 因为当 T == B 这个 ? extends T 显然是假的。

    1 回复  |  直到 5 年前
        1
  •  2
  •   Andy Turner    5 年前
    DataStructure<T extends Comparable<? super T>>