Java学习Day08——泛型

1. 泛型的理解和好处

1.1 使用传统方法的问题

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

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

1.2 泛型的好处

  1. 编译时,检查添加元素的类型,提高了安全性

  2. 减少了类型转换的次数,提高效率说明

  3. 不再提示编译警告

2. 泛型的语法

2.1 泛型的声明

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

比如:List, ArrayList

说明:

  1. 其中,T,K,V不代表值,而是表示类型。

  2. 任2意字母都可以。常用T表示,是Type的缩写

2.2 泛型的实例化

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

  1. List<String> strList = new ArrayList<String>();举例说明

  2. lterator<Customer> iterator = customers.iterator();

2.3 案例

java 复制代码
import java.util.ArrayList;

public class Test01 {
    public static void main(String[] args) {
        //<E>:表示泛型.限制集合中所存的元素类型。 如果不使用默认Object.
//        ArrayList list=new ArrayList();
//        list.add(17);
//        list.add("hello");
//        list.add(new Object());
//        list.add(true);
//
//        Object o = list.get(0);
//        String o2 = list.get(1);
        ArrayList<Integer> list=new ArrayList<>();
        list.add(15);

        Integer integer = list.get(0);

        ArrayList<Student> list2=new ArrayList<>();
        list2.add(new Student(1,"张三1",15.5));
        list2.add(new Student(2,"张三2",125.5));
        list2.add(new Student(3,"张三3",125.5));

        list2.forEach(item-> System.out.println(item));
    }
}

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

  1. interface List<T>{} ,public class HashSet<E>{}.. 等等

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

看看下面语句是否正确?

List<Integer> list = new ArrayList<Integer>();//OKList<int> list2 = new ArrayList<int>();//错误

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

  2. .泛型使用形式

List<Integer> list1 = new ArrayList<Integer>();

List<Integer> list2 = new ArrayList<>();说明:

  1. 如果我们这样写 List list3 = new ArrayList();默认给它的 泛型是[<E>E就是 Object
相关推荐
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 14 章 MCP 服务端(上):注解式实现与工具来源
java·人工智能·开源
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 15 章 MCP 服务端(下):三种协议形态、Streamable 传输与状态管理
java·人工智能·开源
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 16 章 向量存储(上):`VectorStore` 接口体系、`BatchingStrategy`
java·人工智能·开源
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 12 章 工具循环的流式形态、Usage 累加与扩展体系
java·人工智能·开源
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 23 章 模型供应商实现:从 `OpenAiSetup` 到 Bedrock
java·人工智能·开源
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 06 章 内置 Advisor 全景:13 个实现逐个剖到源码级
java·人工智能·开源
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 03 章 消息体系与 Prompt:不可变模型、`ChatOptions` 与模板渲染
java·人工智能·开源
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 24 章 生产实践与 2.x 迁移:陷阱清单、AOT 与调优
java·人工智能·开源
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 10 章 工具调用(中):执行链路、结果转换与工具限制
java·人工智能·开源
鶴哥只手遮天3 小时前
Spring AI 2.0.1 深度解析-第 13 章 MCP 客户端:传输、工具聚合与命名冲突
java·人工智能·开源