JAVA 泛型接口设计

目录

什么是泛型

定义和目的

泛型使用

泛型的实现原理

JAVA 泛型接口设计_第1张图片

什么是泛型

        泛型程序设计(generic programming)是程序设计语言的一种风格或范式。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。

定义和目的

  1. 在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。

  2. 在程序编码中一些包含参数的类。其参数可以代表类或对象等等。

不论使用哪个定义,泛型的参数在真正使用泛型时都必须作出指明。

一些强类型程序语言支持泛型,其主要目的是加强类型安全及减少类转换的次数,但一些支持泛型的程序语言只能达到部分目的。

        泛型的本质是参数化类型,即给类型指定一个参数,然后在使用时再指定此参数具体的值,那样这个类型就可以在使用时决定了。这种参数类型可以用在类、接口和方法中,分别被称为泛型类,泛型接口、泛型方法。

为什么使用泛型

         泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

1、保证安全性。

        在没有泛型之前,从集合中读取到的每一个对象都必须进行类型转换,如果不小心插入了错误的类型对象,在运行时的转换处理就会出错。

比如:没有泛型的情况下使用集合:

public static void noGeneric() {
ArrayList names = new ArrayList();
names.add("丹辉美文");
names.add(123); //编译正常
}

有泛型的情况下使用集合:

public static void useGeneric() {
ArrayList names = new ArrayList<>();
names.add("丹辉美文");
names.add(123); //编译不通过
}

有了泛型后,定义好的集合names在编译的时候add(123)就会编译不通过。

相当于告诉编译器每个集合接收的对象类型是什么,编译器在编译期就会做类型检查,告知是否插入了错误类型的对象,使得程序更加安全,增强了程序的健壮性。

2、消除转换。
        泛型的一个附带好处是,消除源代码中的许多强制类型转换,这使得代码更加可读,并且减少了出错机会。
还是举例说明,以下没有泛型的代码段需要强制转换:

List list = new ArrayList();
list.add("hello");
String s = (String) list.get(0);

        当重写为使用泛型时,代码不需要强制转换:

List list = new ArrayList();
list.add("hello");
String s = list.get(0

你可能感兴趣的:(java,java,开发语言)