• Java


    通配符泛型

    Test<SubObject>继承Test<? extends BaseObject>

    Test<SubObject>和Test<T extends BaseObject>无任何关系

    高级别数组可以赋给低级别数组,反之则不可以。

    SubObejct[] objects=...

    BaseObject[] baseObjects=objects;

    java泛型都会擦除泛型类型,泛型类型转换为Object,如果使用extends,则转换为基类类型,不能用instanceof判断类型

    java一般不能使用==判等,需要使用equal,==只比较引用相同

    ?super SubObject 通配符超类型,支持set

    ?extends BaseObject 支持get

    向上造型一个泛型对象的引用

    例如,假设我们有很多箱子,每个箱子里都装有不同的水果,我们需要找到一种方法能够通用的处理任何一箱水果。更通俗的说法,A是B的子类型,我们需要找到一种方法能够将C<A>类型的实例赋给一个C<B>类型的声明。

    为了完成这种操作,我们需要使用带有通配符的扩展声明,就像下面的例子里那样:

    1. List<Apple> apples = new ArrayList<Apple>();
    2. List<? extends Fruit> fruits = apples;

    “? extends”是泛型类型的子类型相关性成为现实:Apple是Fruit的子类型,List<Apple> 是 List<? extends Fruit> 的子类型。

    向下造型一个泛型对象的引用

    现在我来介绍另外一种通配符:? super。如果类型B是类型A的超类型(父类型),那么C<B> 是 C<? super A> 的子类型:

    1. List<Fruit> fruits = new ArrayList<Fruit>();
    2. List<? super Apple> = fruits;
  • 相关阅读:
    Codeforces Round #271 (Div. 2) C. Captain Marmot
    Codeforces Round #271 (Div. 2) F. Ant colony
    hdu 5002 Tree
    hdu 5052 Yaoge’s maximum profit
    hdu5044 Tree
    Codeforces Round #267 (Div. 2) D. Fedor and Essay
    hdu 4991 Ordered Subsequence
    暑假
    hdu4632 Palindrome subsequence
    【Oracle】【32】TRUNC 截取
  • 原文地址:https://www.cnblogs.com/czcuestc/p/3516874.html
Copyright © 2020-2023  润新知