JAVA 泛型

来源:互联网 发布:出国需要下载什么软件 编辑:程序博客网 时间:2024/06/15 12:34
为什么使用泛型
          1)存储在集合(储存任意类型的数据)中的元素取出来都是Object类型,此时就得强转。
          2)约束存储到集合中的类型都是相同的类型(相同的数据类型才能做比较)。
          3)设计一个点类来封装坐标位置,要求坐标支持String Integer Double 类型
(非常不方便的设计,这个时候需要引用泛型)
泛型:
     1)广泛通用的类型
     2)代码中的类型不确定,谁调用该模板,指明其类型。(不同的调用者选择适合自己的数据类型)
使用泛型:
          泛型不存在继承关系
          使用集合都得用泛型来规定数据类型。
泛型方法:
          1):泛型类中的泛型只能适用于非静态方法。如果需要给静态方法设置泛型,需要用泛型方法。静态参数可以同个类名加对象直接引用,不依赖于对象。
          2)泛型类中的泛型应该属于整个类中的多个方法,有时候只给一个方法设置泛型即可。
一般的自定义的 泛型作为该方法的返回值类型,才有意义。而且此时的泛型必须是由参数设置进来的。如果没有参数来设置泛型的具体类型,此时的方法一般返回设置为Object。


泛型的通配符(主要用于接收的)
          不知道用什么类型来接受的时候可以用?类代替。此时只能接收一下数据

泛型的上限和下限:用来限定元素的类型必须是X类的子类或者相同,或者是X的父类或相同。

          上述代码中 list<?> extends Nunmber 。继承了Number类,说明?只能是Number的子类或者父类。
///////////////////////////////////////////////////////
泛型的擦出:1)泛型编译之后自动消失(泛型自动擦出)
                    2)当把带有泛型的集合赋有不带泛型的集合,泛型被擦出。(手动擦除)
堆污染警告。 (@sefaVarage 抑制堆污染警告)
原创粉丝点击