深入浅出泛型设计-基础篇(一)

**类和方法只能使用具体的参数类型,要么是基本类型(int,string,double...),要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码束缚就比较大。于是我们就引入了范型的,范型不局限于数据的类型,可复用多种类型的参数。**

1. 什么是范型

泛型,即“参数化类型”。所谓参数化类型就是指参数是范型类型,把范型当作参数进行传递。可以将范型当作**方法的参数**、**类的参数**、**静态方法的参数**等进行传递。通俗的讲就是可以把范范当作一种数据类型或者一个参数类型,其内部实现也是一个类,所以传递的类型也是一种对象。

范型的使用示例:

使用示例:
List<String> lists=new ArrayList();
lists.add("张三");
lists.add("李四");

一个简单的范型设计示例:

public class ArrayList<E> extends Collection<E> {
public void add(int location, E object);
public boolean add(E object);
}

ArrayList被定义成范型类,范型类型使用E表示,方法add都是范型方法,ArrayList被定义成可传E类型的参数,那么方法里面所定义的类型也只能是E类型,假设我们在使用初始化ArrayList时传入了String类型,那么方法add所添加的类型也只能是String,假设我们初始化ArrayList传入的类型是double类型,那么add方法传入的类型也只能是double,范型方法的参数类型在编译时已经被指定,不可在构造函数里面传递.

2.*按照书写类型可将范型分为三大类*

1.泛型接口点击查看
2.范型方法

3.*按照范型的功能类型,可将范型划分为如下几大类*

1.范型处理处理具有一类功能的窗口,比如ArrayList,List等,此种类型的范型是集合功能类,将具有同一类型的数据包装在一起进行统一运算或者打包。
2.具有统一的接口类型,比如比较器接口,他们具有相同的接口类型,通过lhs,与rhs进行比较
                 `public interface Comparator {
                    public int compare(T lhs, T rhs);
                    public boolean equals(Object object);
                }`
3.具有相同的基类或者接口,比如在我们的网络模型中,网络模块分为request,response,而所有的网络request都是由若干个key-value组成,而所有的response都是由返回的数据通过parse进行解析,所以在网络开发中,经常会使用到统一的基类/接口范型设计。后续更新的博客中会陆续介绍此种开发模式。

你可能感兴趣的:(泛型)