java基础07泛型

泛型

Java 泛型(generics)是 JDK 5 中引入的一个新特性

泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型

泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数

自定义泛型

泛型除了可以应用在集合上,还可以应用于方法、类、接口、方法上

1.泛型字母

形式类型参数即泛型字母

常见的命名有:

  • ? 表示不确定的 Java 类型

  • T (type) 表示具体的一个Java类型

  • K V (key value) 分别代表Java键值中的Key键 Value值。

  • E (element) 代表Element元素。

通配符:

? 无界通配符:对于不确定或者不关心实际要操作的类型,可以使用无限制通配符(尖括号里一个问号,即 <?> ),表示可以有任何类型。

上界通配符 < ? extends E> 表示该通配符所代表的类型是E类型的子类。

在类型参数中使用 extends 表示这个泛型中的参数必须是 E 或者 E 的子类,这样有两个好处:

  • 如果传入的类型不是 E 或者 E 的子类,编译不成功。

  • 泛型中可以使用 E 的方法,要不然还得强转成 E 才能使用。

下界通配符 < ? super E> 表示该通配符所代表的类型是E类型的父类。

  • 用 super 进行声明,表示参数化的类型可能是所指定的类型,或者是此类型的父类型,直至 Object。

 

2.泛型方法

  • 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前。

  • 每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。

  • 类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。

  • 泛型方法体的声明和其他方法一样。注意类型参数只能代表引用型类型。

//无参数无返回值

public [static] <E> void 方法名(){

}

或者

//有参数有返回值

public [static] <E> E 方法名(E e)

return e;

}

 

3.泛型类

  • 类名后面添加了类型参数声明部分

  • 和泛型方法一样,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开

  • 一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。因为他们接受一个或多个参数,这些类被称为参数化的类或参数化的类型

  •  

posted @ 2021-04-18 21:58  FremontUltimate  阅读(62)  评论(0)    收藏  举报