• 2016-2017-2java20167101010101


    这周学习了泛型程序设计,泛型程序设计意味着编写代码可以被很多不同类型的对象所重用。泛型也被称为参数化类型,就是在定义类、接口和方法时,通过类型参数指示将要处理的对象类型。(如ArrayList类) 泛型程序设计(Generic programming)意味着编写代码可以被很多不同类型的对象所重用。

          在定义简单泛型类时,对于这个类来说,我们只是关注泛型,而不会为数据存储的细节烦恼,以Pair类为例:

    public class Pair<T>

    {

    private T first;

    private T second;

    public Pair() {first = null; second = null;}

    public Pair(T first, T second) { this.first = first; this.second = second; }

    public T getFirst() {return first;}

    public T getSecond() {return second;}

    public void setFirst(T newValue) {first = newValue;}

    public void setSecond(T newValue) {second = newValue;}

    }

       Pair类引入了一个变量T,用尖括号(<>)括起来,并放在类名的后面,泛型类可以有多个泛型变量,,除了定义泛型类,还可以定义泛型方法,泛型方法可以定义在普通类中,也可以定义在泛型类中,对于泛型变量的限定,为了确信T所属于的类有compare to 方法,将T限制为实现了Comparable 接口的类。限定类型用&分隔,逗号分隔类型变量,在java中的继承中,可以根据需要拥有多个接口超类型,但限定中至多有一个类,如果用一个类作为限定,它必须是限定列表中的第一个,extends关键字所声明的上界既可以是一个类,也可以是一个接口,<T extends Bounding Type>表示T应该是绑定类型的子类型,

      

    通过使用super关键字可以固定泛型参数的类型为某种类型或者其超类 当程序希望为一个方法的参数限定类型时,通常可以使用下限通配符。

    泛型类的约束与局限性:

         1、不能用基本类型实例化类型参数 2、运行时类型查询只适用于原始类型3、 不能抛出也不能捕获泛型类实例   4、 参数化类型的数组不合法  5、 不能实例化类型变量 6、泛型类的静态上下文中类型变量无效7、 注意擦除后的冲突

  • 相关阅读:
    深度学习与非线性
    浅谈Class Activation Mapping(CAM)
    如何形象又有趣的讲解对抗神经网络(GAN)是什么?
    X86生态圈为什么在物联网玩不转?什么是Intel® FSP ?它能解决什么问题?
    关于哈希的最通俗的解说
    2020新年快乐,抛弃所有不顺,大步向前
    读心术的方法--多体素模式分析(MVPA)
    Cross-Multimedia dataset
    Word2Vec详解
    解决Error:Could not determine the class-path for interface com.android.builder.model.AndroidProject.
  • 原文地址:https://www.cnblogs.com/bx1214444222/p/7751625.html
Copyright © 2020-2023  润新知