Java泛型中的字母表示
常用的泛型表示字母#
常用的泛型字母表示有?
, T
,K
, V
, E
?
表示不确定的Java类型
T
取词为 type
, 表示一种具体的Java类型
K
取词为key
, 表示Java键值对中的键
V
取词为value
, 表示Java键值对中的值
E
取词为element
, 表示元素
?
和T在类型表示上的区别#
?
表示的泛型参数不一定, 即表示的类型不一定是相同的#
例如:
public int MyList(List <? extends Number> dest, List<? extends Number> src)
在上面的函数中, 就不能保证两个List具有相同类型的参数
无界通配符#
<?>
对于不关心实际操作的或者不确定的类型, 可以直接使用一个<?>
, 表示其可以持有任何类型
上界通配符#
<? extends E>
extends表示?的类型只能是E或者E的子类, 如果不是会报错
下届通配符#
<? super E>
super表示?的类型可以是E或者E的父类, 最高到Object
T
确保泛型参数是一定的, 即表示的类型是相同的#
例如
public <T extends Number> MyList(List <T> dest, List <T> src)
demo#
下面是例子
public class FanXing {
TestA a = new TestA("13");
TestA b = new TestA(123);
public void getClass1(TestA<?> test) {
}
//报错
public void getClass2(TestA<T> test) {
}
}
class TestA<T> {
private T t;
public TestA(T key) {
this.t = key;
}
}
在使用泛型作为方法的参数时 就需要使用泛型通配符来解除传入参数的类型,类型参数就做不到
<?>与<字母>的还有一个区别就在于 字母形参可以在之后的函数调用 T t= it.next();public static void printColl(ArrayList<T> al){
Iterator<T> it = al.iterator();
while(it.hasNext())
{
T t = it.next();
System.out.println(t.toString());
}
}
作者:Evinci
出处:https://www.cnblogs.com/evinci/p/17123933.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律