关于T extends A和? extends A的介绍以及区别,java中泛型的使用

<T extends A>就是我不知道“T”具体是啥,但是我知道它的父类是A
<? extends A>和上面一个效果

区别:
<T extends A>用于声明;<? extends A>单独使用的使用用

举例:

public class Test<T extends A> {}

这里在类名后直接跟<T extends A>
这样在类中,凡是用到“T”的地方,都可以直接用T代表。

public void haha(List<? extends A> strs){}

这里List里面的类型具体是啥不知道,但是知道继承自A

看完例子发现不了区别,别急,上面都说了<T extends A>用于声明,
我们试试将haha方法放进Test类中,然后将haha方法中<? extends A>换成<T>,就像这样:

public class Test<T extends A> {
	public void haha(List<T> strs){}
}

发现了吗?其实这就相当于声明了T,只不过声明位置在类上,你不太习惯而已。
一般都是类上使用<T extends A>,为了声明一个T,在类中使用。

下面多学点。
既然<T extends A>用于声明 ,那么我就是想在单独方法中声明“T”怎么办?
很简单:

public <T extends A> void haha(List<T> strs){}

还是声明,只不过方法中的声明,是在返回值之前声明,
类中声明是在类名之后。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值