Java、泛型和 PECS : still having trouble understanding the C part; concrete example?

标签 java generics pecs

我将在此处发布一个链接: Collections.sort() 。 SO 上有很多关于 PECS 范式的帖子,包括 this one 。在我自己的个人代码中,我经常使用泛型,但只使用过 P 部分(即 <X extends SomethingElse> )。

Collections.sort期望作为其泛型参数 <T extends Comparable<? super T>> 。我看不出super在哪里在那里踢。你有一个具体的例子来说明为什么这是必要的吗?

当我这样做时,我非常担心我也不理解 P 的全部含义...我已经阅读了很多很多链接,但没有明确、明显的证明 P 是 P 和 C是C...

编辑至于这里可能已经有了答案”:不,抱歉。我已阅读此链接以及其他许多链接。这仍然没有告诉我这一切背后的核心机制.到目前为止给我的两个答案给了我提示,实际上比我迄今为止能找到的所有链接都给了我更多提示。

最佳答案

例如

List<Interger> myIntegers = Arrays.asList(5, 2, 3);

List<Long> myLongs = Arrays.asList(5L, 2L, 3L);

MyNumberComparator myNumberComparator = new Comparator<Number>(){...}

Collections.sort(myIntegers, myNumberComparator ); // Number is "super" class of Integer
Collections.sort(myLongs , myNumberComparator ); // Number is "super" class of Long

因此,这里的“super”允许重用 MyNumberComparator 来排序整数和排序长整型。

关于Java、泛型和 PECS : still having trouble understanding the C part; concrete example?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17192772/

相关文章:

java - 尽管没有进行任何更改,简单的应用程序还是崩溃了

java - Spring 配置创建两个 bean 而不是一个

java - 实例变量类型相同?

java - PECS:如何将消费者转变为生产者?

java - 显示 Java GUI 是否需要一些特殊处理?

javascript - 很难从ajax发送json数组来查看spring mvc

c# - 如何在没有引用的情况下克隆通用 List<T>?

c# - 如何使用反射获得泛型类型的正确文本定义?

java - 什么是 PECS(生产者扩展消费者 super )?

java - 什么是PECS(生产者扩展了 super 消费者)?