泛型

泛型

1.为什么使用泛型?

       jdk5.0以前,对象保存到集合中就会失去其特性,取出时通常要进行强类型的强制转换,这样不可避免就会引发一些安全性问题。

2.泛型举例

List<String>list=new ArrayList<String>();

在泛型里面写的是一个类对象,如String,不能写基本的数据类型,如int,要写基本数据类型对应的包装类

             byte -- Byte

             short -- Short

             int -- Integer

             long -- Long

 

             float -- Float

             double -- Double

             char -- Character

             boolean – Boolean

3.泛型类

3.1概述

泛型类:具有一个或多个类型变量的类,称为泛型类

classA<T> {

}

3.2特点

在创建泛型类实例时,需要为其类型变量赋值;如果不赋值,会有警告

A<String> a=new A<String>();

4.泛型方法

4.1  概述

泛型方法:具有一个或多个类型变量的方法,称为泛型方法

4.2 举例

classB {

      public static <T> void add(T t){}

}

classC {

      public <T> T update(T t){}

}

注意:类D中的test方法不是泛型方法

classD<T> {

      public T test(T t){//test方法不是泛型方法

}

}

4.3  泛型类与泛型方法

泛型类和泛型方法之间没有必然联系,泛型方法不一定非要在泛型类中!

5. 泛型的应用

5.1 泛型在方法中的应用

     -- 使用条件:方法逻辑相同,只是数据类型不同,这时候使用泛型方法

     -- public static <T> void swap(T[]arr, int i, int j) {

           T temp=arr[i];

           arr[i]=arr[j];

           arr[j]=temp;        

      }

5.2 泛型在类上的应用

     -- 在一个类上定义一个类型,这个类型可以在类里面直接使用

     -- public class Test <T>{

           T t;                

      }

     -- 在类上面定义的泛型,不能再静态方法种使用

总结:泛型类中使用泛型

成员变量

返回值和参数

局部变量

classDemo<T> {

      private T flag;//泛型在成员变量上使用

      public T fun(T t){//泛型在类中的方法(返回值和参数)上使用 }

public T judge(){

      T t=…;//泛型在局部变量上使用

      //new T();//报错,不可以这样使用!

  }

}

6 泛型的继承和实现

classA<T> {}

classAA extends A<String> {}//AA不是泛型类,只是继承了泛型类!

     * 继承泛型类时,有两种情况:

(1)子类不是泛型类,需要给父类传递类型常量

classAA1 extends A<Integer> {}

(2)子类是泛型类,可以给父类传递类型常量,也可以传递类型变量

classAA2<T> extends A<T> {}

7. 泛型的通配符(?)

“?”表示一个不确定的类型,其值在调用时确定

通配符只能出现在左边,即不能再new时出现通配符,如:

List<?>list=new ArrayList<String>();

List<?extends Object> list=new ArrayList<String>();

7.1 使用场景

一般用在方法的形参上

7.2 通配符的优点

使方法更加通用

7.3 通配符的分类

无界通配:?

子类通配:? extends Object

父类通配:? Super Integer

8 泛型擦除

泛型只是出现在源代码阶段,编译之后泛型就不存在了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值