泛型总结一

160人阅读 评论(0) 收藏 举报
分类:

概念

泛型是jdk1.5使用的新特性。
泛型的好处:

  • 将运行时的异常提前至了编译时。
  • 避免了无谓的强制类型转换 。

泛型在集合中的常见应用:
ArrayList list = new ArrayList();

注意: 泛型没有多态的概念,左右两边的数据 类型必须 要一致,或者只是写一边的泛型类型。

推荐使用: 两边都写泛型。

泛型方法

自定义泛型就是一个数据类型的占位符或者是一个数据类型的变量。
方法上自定义泛型:

修饰符  <声明自定义的泛型>返回值类型    函数名(使用自定义泛型 ...){}
public static <T>T getData(T o){
        return o;
}

方法泛型注意的事项:

  • 在方法上自定义泛型,这个自定义泛型的具体数据类型是在调用该 方法的时候传入实参时确定具体的数据类型的。
  • 自定义泛型只要符合标识符 的命名规则即可, 但是自定义泛型我们一般都习惯使用一个大写字母表示。 T Type E Element

泛型类

泛型类的定义格式:

class 类名<声明自定义泛型>{
}
class MyArrays<T>{
}

泛型类要注意的事项:

  • 在类上自定义泛型的具体数据类型是在使用该类的时候创建对象时候确定的。
  • 如果一个类在类上已经声明了自定义泛型,如果使用该类创建对象 的时候没有指定 泛型的具体数据类型,那么默认为Object类型
  • 在类上自定义泛型不能作用于静态的方法,如果静态的方法需要使用自定义泛型,那么需要在方法上自己声明使用。

泛型接口

泛型接口的定义格式:

interface 接口名<声明自定义泛型>{

}

泛型接口要注意的事项:

  • 接口上自定义的泛型的具体数据类型是在实现一个接口的时候指定 的。
  • 在接口上自定义的泛型如果在实现接口的时候没有指定具体的数据类型,那么默认为Object类型。

泛型的上下限

泛型中通配符: ?

? extends Number :泛型的上限 只能存储Number或者是Number类型的子类数据。

? super Integer:泛型的下限 只能存储Integer或者是Integer父类元素。

public class Demo5 {

    public static void main(String[] args) {
        ArrayList<Integer> list1 = new ArrayList<Integer>();
        ArrayList<Number> list2 = new ArrayList<Number>();

        HashSet<String> set = new HashSet<String>();
        getData(list2);

    }

    //泛型的上限
    public static void getData(Collection<? extends Number> c){


    }

    //泛型的下限
    public static void print(Collection<? super Integer> c){

    }

}
查看评论

泛型知识点总结

存取原则和PECS法则总结 ? extends 和 the ? super 通配符的特征,我们可以得出以下结论:如果你想从一个数据类型里获取数据,使用 ? extends 通配符如果你想把对象写入一个...
  • jiafu1115
  • jiafu1115
  • 2011年07月21日 21:40
  • 1363

java泛型总结学习

代码中经常有用到泛型,但是从来没有系统的总结一下它的用法,今天有时间就做一个总结。 (一)概念 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参...
  • u010408365
  • u010408365
  • 2015年01月07日 15:29
  • 514

java中泛型学习总结

为什么需要使用泛型:1):存储任意类型的数据在集合中 ,但是取出来都是Object类型的,此时就得强转.List list = new ArrayList();list.add(1); //Inter...
  • dreamzuora
  • dreamzuora
  • 2018年03月21日 23:39
  • 18

【总结】Effective java经验之谈,泛型

对于泛型这一章,在起始写框架的时候,并没有注意细节,造成了很多方法或者类的错误设计。这本书在这点上弥补了我一个短板。大概的总结如下。...
  • superMarss
  • superMarss
  • 2015年04月15日 20:02
  • 1341

Java基础知识总结(七)——泛型

心得: 我觉得Java泛型的意义在于在我们使用父类引用操作子类时(擦除),让编译器和JVM来代替我们进行必要的类型检查和转换(checkcast指令,桥方法,signature这些都是编译器和JVM...
  • Zerohuan
  • Zerohuan
  • 2015年12月31日 00:15
  • 1177

java的instanceof自己的一点总结

A  instanceof B; A必需是具体实例,B是一种类(或接口)。B不能是确定泛型参数的泛型。如果A在编译时能过确定具体类型,那么a必须是可以通过(B)a转换成B类型的,不然编译器会报错。如果...
  • lcj_up
  • lcj_up
  • 2009年08月21日 18:13
  • 4158

JAVA学习总结之泛型

泛型(Gereric):     允许在定义类,接口,方法时使用类型形参,这个类型形参将在变量声明,创建对象,调用方法时动态的指定(即传入实际的类型实参),     类型实参在整个接口,类体内可当成类...
  • m0_38109913
  • m0_38109913
  • 2017年10月05日 15:30
  • 54

研一上学期学期总结

终于有时间安下心来好好的做一个学期总结啦。要时常停下来看看自己走过的路,才能更好的调整人生方向,做一个好的掌舵者。 2015年是我最没有目标的一年,整体上缺乏斗志,不知不觉滋长了好多不好的习惯,比如...
  • u010458863
  • u010458863
  • 2016年02月02日 12:41
  • 373

JAVA泛型笔试面试总结

用途 数据结构类型的参数化 产生根源 例如在使用集合框架的时候,Vector里可以添加各种类型, v.add(new Person("tom",20)) Person p = (Person)v.el...
  • magic_wz
  • magic_wz
  • 2013年11月27日 16:00
  • 1979

泛型与反射的使用总结之反射篇

前一篇对泛型进行了一番总结,本篇就来说说与泛型有关的反射。     我在泛型篇中说到了泛型在JVM中是会被擦除的,不过擦除的类还是“残留”了一些泛型的痕迹。比如Person类,虽然擦除掉了泛型,但是...
  • yz7074998
  • yz7074998
  • 2015年03月05日 17:03
  • 792
    个人资料
    持之以恒
    等级:
    访问量: 5万+
    积分: 1404
    排名: 3万+