美文网首页
通配符的超类型限定

通配符的超类型限定

作者: hswwjp | 来源:发表于2019-03-16 23:52 被阅读0次

带有超类型限定的通配符可以向泛型对象写入, 带有子类型限定的通配符可以从泛型对象读取.

Pari<? extends Employee>
? extends Employee getFirst()
void setFirst(? extends Employee)

编译器只知道需要某个 Employee 的子类型, 但不知道具体是什么类型, 它拒绝传递任何特定的类型. 毕竟 ? 不能用来匹配.


Pair<? super Manager>
void setFirst(? super Manager)
? super Manager getFirst()

编译器不知道setFirst 方法的确切类型, 但是可以用任意 Manager 对象(或子类型, 例如, Executive) 调用它, 而不能用 Employee 对象调用. 然而, 如果调用 getFirst, 返回的对象类型就不会得到保证. 只能把它赋给一个 Object.


    public static void main(String[] args) {
        GregorianCalendar[] gc = new GregorianCalendar[2];
        GregorianCalendar gregorianCalendar = testSuperType(gc);
    }

    // GregorianCalendar extends Calendar, Calendar implements Comparable<Calendar>, so GregorianCalendar implements Comparable<Calendar> actually,
    // is not extends Comparable<GregorianCalendar>
    // public static <T extends Comparable<T>> T testSuperType(T[] gc) { // ERROR if T[] instanceof GregorianCalendar[]
    @Test
    public static <T extends Comparable<? super T>> T testSuperType(T[] gc) {
        return null;
    }

GregorianCalendar 是 Calendar的子类, 并且 Calendar实现了 Comparable<Calendar>. 因此 GregorianCalendar实现的是 Comparable<Calendar>, 而不是 Comparable<GregorianCalendar>.

相关文章

  • java范型通配符

    类型通配符 限定型类型通配符 超类型通配符

  • 通配符的超类型限定

    带有超类型限定的通配符可以向泛型对象写入, 带有子类型限定的通配符可以从泛型对象读取. 编译器只知道需要某个 Em...

  • 泛型中extends和super的区别

    限定参数类型的下界:参数类型必须是T或T的超类型 "下界通配符" get( )方法部...

  • java泛型

    1:问:什么是 Java 泛型中的限定通配符和非限定通配符?有什么区别? 答:限定通配符对类型进行限制,泛型中有两...

  • 泛型的类型擦除

    总结: 限定通配符总是包括自己 上界类型通配符:add方法受限 下界类型通配符:get方法受限 如果你想从一个数据...

  • java基础知识梳理&泛型初探

    目录 概述 范型的使用 类型参数 类型通配符 泛型方法 泛型类 限定类型参数上限 上界通配符(Upper Boun...

  • 通配符详解 extends super

    在java泛型中,? 表示通配符,代表未知类型,< ? extends Object>表示上边界限定通配符,< ?...

  • 泛型限定

    泛型的通配符:? 可以对类型进行限定:? extends E :接收E类型或者E的子类型对象。上限? super ...

  • Kotlin泛型变体

    Extends协变 带 extends 限定(上界)的通配符类型使得类型是 协变的(covariant),只能接受...

  • CoreJava笔记 - 范型程序设计(4)

    通配符类型 什么是通配符类型Employee是Manager的超类。定义一个打印方法:public static ...

网友评论

      本文标题:通配符的超类型限定

      本文链接:https://www.haomeiwen.com/subject/benemqtx.html