Java强化笔记 泛型与可变参数

本文介绍了Java中的泛型,包括泛型的概念、定义格式、泛型类、泛型方法、泛型接口和类型通配符。此外,还详细讲解了可变参数的使用场景、特点以及JDK中如Arrays.asList()、List.of()和Set.of()等可变参数方法的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是泛型

1.1 概述

JDK5引入的新特性,所操作的数据类型变成了一个参数。将原来的具体类型参数化,然后在调用时再传入具体的类型,这种参数类型用在类,方法和接口中,就成了泛型类,泛型方法,泛型接口。

1.2 泛型定义格式

<>
<type1,type2>

1.3 GenericDemo

问题:一个Collection类对象,里面可以储存任意类型元素,在其中放入String类型元素,输出时类型强转为String,正常输出。但是当里面加入了整数型元素,再强转输出就会出现类型转换异常ClassCastException
解决方法:使用泛型,1. 将运行时异常提前到了编译,2. 避免了类型转换

2.泛型类

爷就是想用一个方法接收不同类型,不想搞两个类,那么我们就可以用一个泛型类
格式:public class Generic
其中T可以被写为任意标记,常用的有T、E、K、V
泛型类Demo:

//泛型类
public class Generic<T>{
	private T t;
	public T getT(){
		return t;
	}
	public T setT(){
		this.t=t;
	}
}
Generic<String> g1 = new Generic<String>();
g1.set("名字")System.out.println(g1.getT());

Generic<Integer> g2 = new Generic<Integer>();
g2.setT(12)System.out.println(g2.getT());
//都可以正常输出

3.泛型方法

场景 一个类里面重写了一堆方法,参数不同。但是好麻烦
泛型类每次都要创建对象还要声明类型
定义格式:public void showT(T t){};
泛型方法Demo:

但是为什么有了这个还需要方法重载?

4.泛型接口

格式:public interface Generic{}
泛型接口Demo:

//接口
public interface Generic<T> {
    void show(T t);
}
//泛型接口的实现类
public class GenericImpl<T> implements Generic<T> {
    @Override
    public void show(T t) {
        System.out.println(t);
    }
}
//测试demo
public class GenericInterfaceDemo {
    public static void main(String[] args) {
        Generic<String> g1 = new GenericImpl<>();
        g1.show("wyd小朋友");

        Generic<Integer> g2 =new GenericImpl<>();
        g2.show(24);
    }
}

5.类型通配符

<?>用来表示各种泛型List的父类,List<?>元素可以匹配任何的类型,并不能把元素添加在其中

类型通配符上限:<? extends 类型> 限制了最高的类型,可表示当前类型与其子类型
类型通配符下限:<? super 类型>限制了最低的类型,不能比当前类型更小
在这里插入图片描述

6.可变参数

场景:有一堆相加求和的函数,但是参与运算的个数不同,又搞出了一堆重写,这样不好
实际上可变参数内部a是个数组,把所有的参数都封装进了数组a,所以对数组各元素求和就能求和
注意:1.一个方法中只能有一个可变参数。2.一个方法中含有多个参数,可变参数必须放在最后
在这里插入图片描述

JDK中的可变参数方法

Arrays.asList(T… a)返回制定数组支持的固定大小列表

增删都不行,可以改

List.of(E…elements)返回包含任意元素数量的不可变列表

增删改都不行

Set.of(E…elements)返回包含任意元素数量的不可变集合

集合不能有重复元素
不能做增删操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值