1、泛型说明

1. 泛型引入

1、使用传统方法的问题

  • 不能对加入到集合 ArrayList 中的数据类型进行约束(不安全)

  • 遍历的时候,需要进行类型转换,如果集合中的数据量较大,对效率有影响

2、泛型的好处

  • 编译时,检查添加元素的类型,提高了安全性
  • 减少了类型转换的次数,提高效率
  • 不在提示编译警告

3、泛型介绍

  • 泛型又称参数化类型,是jdk5.0 出现的新特性,解决数据类型的安全性问题
  • 在类声明或实例化时只要指定好需要的具体的类型即可
  • Java泛型可以保证如果程序在编译时没有发出警告,运行时就不会产生ClassCastException异常。
  • 泛型的作用是:可以在类声明时通过一个标识表示类中某个属性的类型,或者是某个方法的返回值的类型,或者是参数类型。
package com.hspedu.generic;

public class Generic03 {
    public static void main(String[] args) {

        Person<String> person = new Person<String>("教育");
        

    }
}

class Person<E> {
    E s; //E 表示s 的数据类型,该数据类型在定义Person对象的时候指定,即在编译期间,就确定E是什么类型

    public Person(E s) { //E也可以是参数类型
        this.s = s;
    }

    public E f() { //返回类型使用E
        return s;
    }
}

4、泛型的语法

  • 泛型的声明:

    interface 接口{} 和 class 类<K,V>{}

    1. 其中,T,K,V不代表值,而是表示类型
    2. 任意字母都可以,常用 T 表示,是Type 的缩写
  • 泛型的实例化:

    要在类名后面指定类型参数的值(类型)。如:

    1. List strList = new ArrayList();
    2. Iteratoriterator = custmers.iterator();

5、泛型使用的注意事项和细节

  • interface List{} , public class HashSet();

    说明:T,E 只能是引用类型

  • 在给泛型指定具体类型后,可以传入该类型或者其子类类型

  • 使用形式

    //编译器会进行类型推断   推荐使用
    ArrayList<Integer> list = new ArrayList<>();
    List<Integer> list2 = new ArrayList<>();
    
  • 如果我们这样写 List list3 = new ArrayList(); 默认给它的泛型是 [ E 就是 Object]

posted @ 2023-02-14 22:32  花er公子  阅读(19)  评论(0编辑  收藏  举报