zoukankan      html  css  js  c++  java
  • 泛型结构使用大全(泛型类、泛型接口)

    1、泛型类可能有多个参数,此时应将多个参数一起放到尖括号内,比如:<E1,E2,E3>

    2、泛型类的构造器如下:

    public GenericClass(){}

    *错误示例:public GenericClass<E>(){}

    3、实例化后,操作原来泛型位置的结构必须与指定的泛型类型一致。

    4、泛型不同的引用不能互相赋值。

    尽管在编译时ArrayList<String>和ArrayList<Integer>是两种类型,但是,在运行时只有一个ArrayList被加载到JVM中。

    5、泛型如果不指定,将被擦除,泛型对应的类型均按照Object处理,但不等价于Object。

    经验:泛型要使用就一路都用。如果不用,就一路都不要用。

    6、如果泛型结构是一个接口或者抽象类,则不可创建泛型类的对象。

    7、jdk1.7,泛型的简化操作:

    ArrayList<Fruit> flist = new ArrayList<>();

    8、泛型的指定中不能使用基本数据类型,可以使用包装类替换。

    9、在类/接口上声明的泛型,在本类或本接口中即代表某种类型,可以作为非静态属性的类型、非静态方法的参数类型、非静态方法的返回值类型。但在静态方法中不能使用类的泛型。

    10、异常类不能是泛型的。

    11、不能使用new E[]。但是可以 E[] elements = (E[])new Object[capacity];

    参考:ArrayList源码中声明:Object[] elementData,而非泛型参数类型数组。

    12、父类有泛型,之类可以选择保留泛型也可以选择指定泛型类型:

    • 子类不保留父类的泛型:按需实现

        ①没有类型 擦除

        ②具体类型

      之类保留父类的泛型:泛型子类

        ①全部保留

        ②部分保留

    结论:子类必须是“富二代”,子类除了指定或保留父类的泛型,还可以增加自己的泛型。

  • 相关阅读:
    第八章 多线程编程
    Linked List Cycle II
    Swap Nodes in Pairs
    Container With Most Water
    Best Time to Buy and Sell Stock III
    Best Time to Buy and Sell Stock II
    Linked List Cycle
    4Sum
    3Sum
    Integer to Roman
  • 原文地址:https://www.cnblogs.com/smallVampire/p/13972832.html
Copyright © 2011-2022 走看看