zoukankan      html  css  js  c++  java
  • 泛型

    一、泛型

    1、泛型:所谓泛型就是在定义类,定义接口时,通过一个标识表示类中的某个属性的类型。或者是某个方法的返回值及参数类型。这个参数在使用时(如:继承或者实现接口时,用这个类型申明的变量,创建对象时)确定(即传入实际类型参数,也称为类型实参)

    2、优势:保证元素存储的安全问题;解决获取元素类型的强制类型转换问题

    3、Map<String,DivObject> map = new HashMap();//指定key只能时String,Value也只能是指定的类型

    4、如果接口定义泛型类型,实现接口时必须要指定泛型类型

    5、泛型的核心思想:把一个集合中的内容限定为一个特定的数据类型


    二、自定义泛型的结构

    Interace List<T>或者class Test<K,V>,其中K、V、T不代表具体的值,只代表类型(不能使用八种基本类型,只能用其包装类,因为泛型必须时Object的子类),在实例化的时候要明确指定类型。其中泛型只能是类

    泛型的实例化:一定要在类名或者接口名指定类型参数 :List<Integer> list = new ArrayList<Integer>(),最后一个Integer可以不写,若不写,则底层会进行类型推断

    1、自定义泛型类

    public Class DivClass<T,K,V>{

    private T element;

    public T setElement(T element){

    this.element = element;

    }

    }

    2、自定义泛型接口

    public interface DivInterFace<T,K,V>{

    V setName(V name);

    }

    3、自定义泛型方法 //泛型方法和类没有关系

    public <T> T[] getArray(T[] arr){

    return arr;

    }

    ·子类不保留父类的泛型。

    Class Son<E,V> extends Father<E>{};Class Son extends Father<Integer>{};

    如果子类没有类型,则擦除

    若要保留(1)子类在继承的时候指定父类的泛型

    (2)子类需要再次申明父类泛型的类型(全部保留或者部分保留)

    ·静态方法不能使用泛型

    ·异常类不能使用泛型


    三、通配符

    1、通配符:?

    比如List<?>,Map<?,?>

    读取List<?>也是安全的,不管List的真实类型是什么,其都包含Object。

    写入的时候不知道具体的元素对象类型,所以不能添加对象。唯一的例外是null

    2、如果需要使用通配符

    (1)不能在泛型、方法、以及返回值前使用,不能在类泛型类的声明上使用,创建对象时构造方法后不能使用通配符

    (2)若要使用通配符时,要

    限定通配符的上限(需要extends关键字),如:List<? extends Father>表示所使用的类型不能大于Father类(是Father类或者Father的子类)

    限定通配符的下限,如List<? super Son> 表示所使用的类型不能小于Son类(是Son类或者Son的父类).

    (3)super在求无穷大(只有下界) extends在求无穷小(只有上界)

    (4)父类引用可以指向子类,所以super中直到了最小范围,故可以同父类指向


    四、八种数据类型的包装类

    1、int:Integer

    2、byte:Byte

    3、short:Short

    4、char:Character //char类型是无符号的,所以不能为负(从0开始)

    5、long:Long

    6、float:Float

    7、double:Double

    8、boolean:Boolean

  • 相关阅读:
    winform+c#之窗体之间的传值 Virus
    ASP.NET 2.0 利用 checkbox获得选中行的行号, 在footer中显示 Virus
    .NET中的winform的listview控件 Virus
    我的书橱
    Expert .NET 2.0 IL Assembler·译者序一 写在一稿完成之即
    Verbal Description of Custom Attribute Value
    AddressOfCallBacks in TLS
    下一阶段Schedule
    2008 Oct MVP OpenDay 第二天 博客园聚会
    2008 Oct MVP OpenDay 第二天 颁奖·讲座·晚会
  • 原文地址:https://www.cnblogs.com/JQbiu/p/11248173.html
Copyright © 2011-2022 走看看