zoukankan      html  css  js  c++  java
  • List<Object>、List<?>、List、List<?extends>、List<?super>

    题目源自 牛客

    classA{}
    class B extends A{}
    class C extends A{}
    class D extedns B{}

    which is true --答案 ACD
    A:The type LIst<A> is assignable to List √ //List 相当于 List<?>范围比List<A>大
    B:The type List<B> is assignable to List<A> × //两个点之间不能赋值,除非是相同的两个点
    C: The type List<Object> is assignable to List<?> √//List<?>是最大范围, 而List<Object>只是其中的一个点,在最大范围内
    D: The type List<D> is assignable to List<?extendsB> √//D是B的子类,所以D的范围比B小 

    如果尖括号里是一个类,例如 List<A>, List<B>, List<C>,List<Object>就是普通的泛型
    如果尖括号里是<?extends >,例如 List<? extends A>代表小于等于A的范围(extends 继承,extends A 继承自A,就是范围小于等于A)
    如果尖括号里是<? super>,例如List<? Super A> 代表范围大于等于A
    如果尖括号里是<?> 则代表全部范围
    List<?> 和 List 范围相同
    尖括号里,所有点赋值都是错的,除非两个点相同eg: List<A> = List<B>,将B赋值给A是错的, 但是 List<? extends A> = List<B> 是对的
    尖括号里,小范围赋值给大范围 ,对
    尖括号里,大范围赋值给小范围,错
    尖括号里,相同的点可以互相赋值

  • 相关阅读:
    mybatis以序列周期,同样处理的这个问题的价值
    达到HTTP合约Get、Post和文件上传功能——采用WinHttp介面
    采用curl库
    MFC 盾webBrowser打开弹出的页面
    reactnative调研
    React Native通信机制详解
    问题与学习 分析与综合
    学习、概念与概念簇
    奥苏伯尔学习理论
    语言与编程语言
  • 原文地址:https://www.cnblogs.com/coisini/p/10964876.html
Copyright © 2011-2022 走看看