Java泛型概念及使用方法有哪些具体应用场景?

2026-05-26 03:421阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计849个文字,预计阅读时间需要4分钟。

Java泛型概念及使用方法有哪些具体应用场景?

分析代码+在理解什么是泛型之前,我想先分析以下代码。考虑以下代码是否会产生错误,如果产生错误,请指出错误类型。+import java.util.ArrayList;+public class ListTest{+public static void main(String[] args) {+ // 数组队列保存“

分析代码

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

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);
}
}
}

答案似乎很显然,在我们打印的时候,他会出现以下错误信息:

在上面的编码和报错中我们能发现以下两个问题:

  • 当将各种不同数据类型的对象放入数组中,该数组不会记住对象的类型,当再次取出此对象时,该对象成为了object类型,但是它运行的时候,该对象的类型仍然是它加入数组时的数据类型。
  • 在我们取出数组元素时,需要人为强制转换为具体的目标类型,但由于存在数值型(整型)的数据,而​​msg=(String)arrayList.get ( i );​​只是简单的将所有数据强制转换,所有才会报错。
  • 泛型

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

    泛型定义

    在java语言中,泛型定义如下:

    public class 泛型类类名<T>{
    //....
    }
    复制代码

    声明泛型变量并赋值的方法:

    Java泛型概念及使用方法有哪些具体应用场景?

    泛型类类名<具体类名> 变量名 = new 泛型类类名<>(参数列表);
    复制代码
    • 注:< T >声明是泛型的标记,T可以是成员属性的类型、其内部方法的返回类型方法参数的类型。泛型类的构造方法的参数列表中,一定包含数据类型是其他类名的常量或变量
    • 泛型的接口定义
    public interface 接口名<T>{
    public void 方法1(参数列表);
    public T 方法2(参数列表);
    //......
    }
    - 泛型方法定义
    ```java
    public <T> void 方法名(参数列表){
    //。。。。
    }
    复制代码
    • 调用泛型的方法
    方法名(实参参数列表);
    复制代码
    • 注 :< T >只是一个泛型方法的标记,T是返回的类型。泛型方法只在泛型类或泛型接口中可见。T可以出现在泛型方法的参数列表中。

    作者:YWuHuang 链接:​​juejin.cn/post/7156596655565832205​​ 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    本文共计849个文字,预计阅读时间需要4分钟。

    Java泛型概念及使用方法有哪些具体应用场景?

    分析代码+在理解什么是泛型之前,我想先分析以下代码。考虑以下代码是否会产生错误,如果产生错误,请指出错误类型。+import java.util.ArrayList;+public class ListTest{+public static void main(String[] args) {+ // 数组队列保存“

    分析代码

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

    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);
    }
    }
    }

    答案似乎很显然,在我们打印的时候,他会出现以下错误信息:

    在上面的编码和报错中我们能发现以下两个问题:

  • 当将各种不同数据类型的对象放入数组中,该数组不会记住对象的类型,当再次取出此对象时,该对象成为了object类型,但是它运行的时候,该对象的类型仍然是它加入数组时的数据类型。
  • 在我们取出数组元素时,需要人为强制转换为具体的目标类型,但由于存在数值型(整型)的数据,而​​msg=(String)arrayList.get ( i );​​只是简单的将所有数据强制转换,所有才会报错。
  • 泛型

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

    泛型定义

    在java语言中,泛型定义如下:

    public class 泛型类类名<T>{
    //....
    }
    复制代码

    声明泛型变量并赋值的方法:

    Java泛型概念及使用方法有哪些具体应用场景?

    泛型类类名<具体类名> 变量名 = new 泛型类类名<>(参数列表);
    复制代码
    • 注:< T >声明是泛型的标记,T可以是成员属性的类型、其内部方法的返回类型方法参数的类型。泛型类的构造方法的参数列表中,一定包含数据类型是其他类名的常量或变量
    • 泛型的接口定义
    public interface 接口名<T>{
    public void 方法1(参数列表);
    public T 方法2(参数列表);
    //......
    }
    - 泛型方法定义
    ```java
    public <T> void 方法名(参数列表){
    //。。。。
    }
    复制代码
    • 调用泛型的方法
    方法名(实参参数列表);
    复制代码
    • 注 :< T >只是一个泛型方法的标记,T是返回的类型。泛型方法只在泛型类或泛型接口中可见。T可以出现在泛型方法的参数列表中。

    作者:YWuHuang 链接:​​juejin.cn/post/7156596655565832205​​ 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。