• java泛型


    泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数

    引入泛型的好处是安全简单。可以将运行时错误提前到编译时错误。没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。

    在泛型接口、泛型类和泛型方法的定义过程中,我们常见的如T、E、K、V等形式的参数常用于表示泛型形参

    1、实例的类型是相同的

    Box<String> name = new Box<String>("1");

    Box<Integer> age = new Box<Integer>(2);

    System.out.println("name class:" + name.getClass()); // com.qqyumidi.Box
    System.out.println("age class:" + age.getClass()); // com.qqyumidi.Box
    System.out.println(name.getClass() == age.getClass()); // true

    泛型类型在逻辑上看以看成是多个不同的类型,实际上都是相同的基本类型

    2、类型通配符

    类型通配符一般是使用 ? 代替具体的类型实参。

    注意了,此处是类型实参,而不是类型形参!且Box<?>在逻辑上是Box<Integer>、Box<Number>...等所有Box<具体类型实参>的父类,例如:

    public static void getData(Box<?> data) {

     System.out.println("data :" + data.getData());

    }

    参数类型可以是任何Box<具体类型实参>

    3、类型通配符上下限

    将上面的方法改造下

    public static void getData(Box<? extends Number> data) {

     System.out.println("data :" + data.getData());

    }

    这时,参数类型就只能是具体类型为Number或子类的了,例如:Box<Integer>,Box<Number>等

    4、定义新类型

    <T> T[] toArray(T[] a)

    <T>定义了一种新类型,这样在返回类型"T[]" 和 参数类型"T[]" 上都能指定这种新类型

  • 相关阅读:
    GNU make manual 翻译( 一百五十)
    [导入]Google开发者日见闻 王开源现身
    [导入]微软中国原高管宫力就任火狐中国总经理
    [导入]QQTalk Beta1 简体中文版
    [导入]《南方都市报》:国产龙芯产业化 难
    [导入][多图]Nokia正式发布奢华8600/6500双子手机
    [导入]用户界面设计的技巧与技术
    [导入]BitComet(比特彗星) 0.89
    [导入]µTorrent 1.7 beta 2248
    今天我注册了
  • 原文地址:https://www.cnblogs.com/ptw-share/p/6930170.html
Copyright © 2020-2023  润新知