Java语言中的泛型的概念和使用方法


highlight: a11y-dark

theme: channing-cyan

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情

分析代码

在理解什么是泛型之前,我想大家先分析以下代码。思考该代码是否会报错,报什么错。 ```java import java.util.ArrayList;

public class ListTest{ public static void main(String[] args) { //数组队列保存数据 ArrayList arrayList=new ArrayList (); //name arrayList.add("张三"); //age arrayList.add ( 18 ); //sex arrayList.add ("男"); String msg; for (int i = 0; i < arrayList.size (); i++) { msg=(String)arrayList.get ( i ); System.out.println (msg); } } } ``` 答案似乎很显然,在我们打印的时候,他会出现以下错误信息:

image.png 在上面的编码和报错中我们能发现以下两个问题: 1. 当将各种不同数据类型的对象放入数组中,该数组不会记住对象的类型,当再次取出此对象时,该对象成为了object类型,但是它运行的时候,该对象的类型仍然是它加入数组时的数据类型。 2. 在我们取出数组元素时,需要人为强制转换为具体的目标类型,但由于存在数值型(整型)的数据,而msg=(String)arrayList.get ( i );只是简单的将所有数据强制转换,所有才会报错。

泛型

java语言提出的泛型就是用来避免上面的这类错误的。泛型意思就是参数化类型,而参数化类型,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式,然后再调用时传入具体的参数类型

泛型定义

在java语言中,泛型定义如下: java public class 泛型类类名<T>{ //.... } 声明泛型变量并赋值的方法: java 泛型类类名<具体类名> 变量名 = new 泛型类类名<>(参数列表); - 注:< T >声明是泛型的标记,T可以是成员属性的类型、其内部方法的返回类型方法参数的类型。泛型类的构造方法的参数列表中,一定包含数据类型是其他类名的常量或变量

  • 泛型的接口定义

```java public interface 接口名 { public void 方法1(参数列表); public T 方法2(参数列表); //...... }

  • 泛型方法定义 java public void 方法名(参数列表){ //...... } ```
  • 调用泛型的方法

java 方法名(实参参数列表); - 注 :< T >只是一个泛型方法的标记,T是返回的类型。泛型方法只在泛型类或泛型接口中可见。T可以出现在泛型方法的参数列表中。

猜你喜欢

转载自blog.csdn.net/y943711797/article/details/132972180