栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

1.什么是泛型 1.1 概述

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

1.2 泛型定义格式

<>

1.3 GenericDemo

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

2.泛型类

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

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

Generic g2 = new Generic();
g2.setT(12);
System.out.println(g2.getT());
//都可以正常输出
3.泛型方法

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

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

4.泛型接口

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

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

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

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

类型通配符上限: 限制了最高的类型,可表示当前类型与其子类型
类型通配符下限:限制了最低的类型,不能比当前类型更小

6.可变参数

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

JDK中的可变参数方法 Arrays.asList(T… a)返回制定数组支持的固定大小列表

增删都不行,可以改

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

增删改都不行

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031538.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号