泛型 简谈


 一. 概述


   1. 类型
      引入泛型前:基本类类型  复杂类型

       引入泛型后:复杂类型可以在细分为更多的类型

       如原先的类型List,现在在细分成

List<Object>,
List<String>,
List<Integer>

      等更多的类型

    2.方法

      方法需要实现多个参数类型,需要重载多个方法  

public void write(Integer i, Integer[] ia);

public void write(Double  d, Double[] da);

      现在用泛型可以直接解决  

public <T> void write(T t, T[] ta);

 二 泛型的定义和使用

   1) 命名

    K  ---   键
    V  ---   值
    E  ---   异常类
    T  ---  泛型
   ?  ---  通配


   2)定义带类型参数的类
      
      紧跟类名之后的<>,指定一个或者多个类型参数的名字
      父类定义的类型参数不能被子类继承

 <span style="font-size:12px;">public class TestClassDefine<T, S extends T> {
     ....  
 }</span>


      定义带类型参数的方法

 <T> void test(List<T> s){}

      如果只是想实现多态,则优先使用通配符:

void GenericMethodDefine(List<?> s){}
   
   3)对带类型参数的类进行类型参数的赋值
     声明类变量或者实列化  
 List<String> list = new ArrayList<String>();
     继承类或者实现接口时   
 class MyList<E> extends ArrayList<E> implements<E>{}</span>

三 实现原理 
   1)java泛型时编译时技术,在运行时不包含泛型信息,仅仅在Class 的实列中包含了类型参数的的定义信息。
   2)一个泛型类被其所有的调用共享
   
<span style="font-size:18px;"> List<String> l1 = new ArrayList<String> ();
 List<String> l2 = new ArrayList<String> ();

 System.out.prinnln( l1.getClass() == l2.getClass());</span>

     结果为true

 
四 Class 泛型的处理
   String.class 类型代表Class<String> ;
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值