您的位置:首页 > 其它

泛型 简谈

2016-03-22 17:12 232 查看
一. 概述

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> ;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: