java集合Day4

集合

泛型和工具类

泛型

  • 本质是参数化类型,把类型作为参数传递
  • 常见形式:泛型类,泛型接口,泛型方法
  • 语法:
    • <T,…> T称为类型占位符,表示一种引用类型
  • 好处
    • 提高代码的重用性
    • 防止类型转换异常,提高代码的安全性

举个例子,你定义了一个集合list,然后开始往集合中添加元素

list.add("更生");
list.add("甦");
list.add(100);//这里会自动装箱包装成Interger类

看起来是没有问题的,系统也不会认为有问题,但事实上前两个元素是String类,后一个是Interger类型,在使用时必然会出问题,就如在遍历时,以迭代器为例,原本是这样的

while (it.hasNext()){
    String s =(String) it.next();
    System.out.println(s);
}

但这样一定会报错,因为有一个元素不是String类型,但同时又不能给一个对象定义两种毫无关系的类型,所以系统抛出了异常

我们发现,因为创建集合时并没有规定添加类型,所以编译时不会报错,然而,这样会有很大的漏洞,因为这个错误只有在运行时才能显现出来,也就是说会大大降低开发时的调试效率

所以我们提出了泛型的概念,即把数据类型作为变量,这样就能在一开始规定集合的数据类型,如此一来,在你添加100这个元素时就会报错,即在编译阶段就能找到错误,增大了容错率

泛型类

  • 语法
    • 类名< T >
    • T是类型占位符,表示一种引用类型,且不可是基本类型,如果编写多个,使用逗号隔开

我们先来创建一个变量

//使用泛型
//1.创建变量
T t;

这里是不能用new的,因为根本不知道是哪种类型

再来演示一下在方法中的应用,泛型是可以作为方法的参数的

//2.添加方法,作为方法的参数
public void show(T t){
    System.out.println(t);
}

还可以作为方法的返回值

//3.泛型作为方法的返回值
public T getT(){
    return t;
}

合到一起如下

package com.assemble.myGeneric;
/*
泛型类
语法:类名<T> 占位符表示数据类型,且可以写多个泛型
T是类型占位符,表示一种引用类型,且不可是基本类型,如果编写多个,使用逗号隔开
 */
public class Demo01<T> {
    //使用泛型
    //1.创建变量
    T t;

    //2.添加方法,作为方法的参数
    public void show(T t){
        System.out.println(t);
    }

    //3.泛型作为方法的返回值
    public T getT(){
        return t;
    }
}

接下来我们建一个测试类

使用泛型类创建对象

//使用泛型类创建对象
Demo01<String> myGeneric=new Demo01<String>();
Demo01<Integer> myGeneric2=new Demo01<Integer>();

使用方法

myGeneric.t="hello";
myGeneric.show("大家好");
myGeneric.getT();
myGeneric2.t=100;
myGeneric2.show(200);
Integer integer=myGeneric2.getT();

完整代码为

package com.assemble.myGeneric;

public class Test {
    public static void main(String[] args) {
        //使用泛型类创建对象
        Demo01<String> myGeneric=new Demo01<String>();
        myGeneric.t="hello";
        myGeneric.show("大家好");
        myGeneric.getT();

        Demo01<Integer> myGeneric2=new Demo01<Integer>();
        myGeneric2.t=100;
        myGeneric2.show(200);
        Integer integer=myGeneric2.getT();

    }
}
/*
注意:
1. 泛型只能使用引用类型
2. 不同泛型类型对象之间不能相互赋值
 */

输出为

大家好
200
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值