泛型(通配符等)

博客介绍了Java泛型,即“参数化类型”,将类型参数化。涵盖泛型类、泛型接口、泛型方法、泛型限制类型和泛型通配符“?”的使用。使用泛型可提高代码复用,使用时指定类型,无需强制类型转换,编译器会检查类型。

泛型,即"“参数化类型”"。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式《可以称之为类型形参》,然后在使用调非时传入具体的类型(类型实参)。

泛型类

创建ClassName 将变成 类型 那么他里面的T全部都会变成String类型
如果说你传入int 那么他就会变成int类型
在这里插入图片描述
调用泛型类
在这里插入图片描述

泛型接口

1.泛型的接口跟泛型的方法使用是一样的
在这里插入图片描述

泛型方法

在这里插入图片描述
这里有一个自动拆装箱的过程 假如我直接在print方法中直接传入String那么他那个A会自动的变成string类型
在这里插入图片描述

泛型限制类型

1.在使用泛型时,可以指定泛型的限定区域
- 例如:必须算某某的子类或者 某某接口的实现类
- <T extends 类或接口1 & 接口2>
在这里插入图片描述

泛型中的通配符" ?"

类型的通配符使用的是? 代替方法具体的类型实参
1.<? extends parent> 指定了泛型类型的上届
需求
在这里插入图片描述
上届通配符的使用
在这里插入图片描述

2.<?super Child>指定了泛型类型的下届
在这里插入图片描述

3.<?> 指定了没有限制的泛型类型
在这里插入图片描述

作用
1.提高代码的复用
2.泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型)

Java中,通配符用于解决类安全问题,并提供了一种方法来引用类,而不需要知道具体的类参数。通配符主要有以下几种形式: 1. `?`:无界通配符,表示未知的类,可以匹配任何对象的类。 2. `<? extends 类或接口>`:表示具体的类,但不是确定的类。`extends`在这里的意思是“某种类的子类”。这可以用来限定类参数的上界,只允许该通配符引用某个类或其子类。 3. `<? super 类或接口>`:表示具体的类,但不是确定的类。`super`在这里的意思是“某种类的父类”。这可以用来限定类参数的下界,只允许该通配符引用某个类或其父类。 4. `? extends 类1 & 类2 & ... & 类n>`:表示有限制的通配符,可以引用同时满足多个上限类约束的类。 使用通配符的目的是为了增强代码的灵活性,同时保证类安全。例如,如果有一个方法需要接受任何类的`List`作为参数,但不想限制这个`List`只能包含特定类的对象,那么可以使用无界通配符`<?>`。 下面是一个简单的例子,来说明如何使用通配符: ```java public class GenericWildcardExample { public static void processElements(List<?> elements) { for (Object element : elements) { // 处理元素,但不知道元素的实际类 } } } ``` 在这个例子中,`processElements`方法可以接受任何类的`List`对象作为参数,但在方法内部,我们只能将元素当作`Object`类来处理。 使用通配符的注意事项: - 不能实例化通配符。 - 不能使用带有通配符的类作为方法的参数类,因为这会导致在调用时出现类安全问题。 - 如果要向集合中添加元素,那么只能添加`Object`类的元素,因为编译器不知道集合中具体存储的是哪种类的对象。
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值