为什么泛型类的构造方法使用时要额外加<泛型> 80

为什么泛型类的构造方法使用时要额外加<泛型>例如:ArrayList的构造函数publicArrayList(){this.elementData=DEFAULTCAPA... 为什么泛型类的构造方法使用时要额外加<泛型>

例如:ArrayList的构造函数
public ArrayList() {
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}

但是使用时:
ArrayList<String> arrayList = new ArrayList<String>();
右边多了一个<String>
为啥?
展开
 我来答
宅宅的咖啡猫
2021-07-13
知道答主
回答量:10
采纳率:100%
帮助的人:1.1万
展开全部
第1,使用时是ArrayList<String> arrayList = new ArrayList<>();。注意右侧不是<String>,而是<>。更准确的说,因为右侧只能与左侧的相同,所以这里只能是<String>,所以简写为<>。
第2,使用时加<>是显然的,因为它就是泛型类的构造方法嘛,加上后,一方面更规范,另一方面也便与编译器调用。
第3,那么为什么构造函数中没有加<T>:因为泛型类中所有成员本身就是基于泛型的,声明已经在泛型类头部说明了。同时加上<T>的显式泛型方法或其他泛型类,一般是Static方法或Static类,他们独立于已有的泛型类,不能调用现有泛型类的成员,所以需要加<T>。因此构造函数和泛型类中的成员函数不加<T>,也可以和泛型Static方法相区分。
第4,Java的泛型,只是为了程序员编写方便,以及在编译的时候做类型检查,在实际运行当中,会进行类型擦除。而且泛型代码和非泛型代码在运行时也并不会快多少,但是逻辑上简洁很多。
司马刀剑
高粉答主

2019-01-03 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7326万
展开全部
一定要,拿常见的泛型方法举例
List算是最常见的。
自定义类

class testObject (){ public string TestName; public int TestIntValue;}//声明一个泛型类List<testObject > mList = new List<testObject >(); mList.Add(new testOnject(){TestName="somename" , TestIntValue = 1} );//调用泛型方法 testObject[] mArray = mList.ToArray<testObject[]>();

另外 Linq中 也大量需要这种利用<> 给出泛型具体目标类型的语法。
追问
我想知道为什么要加,明明构造方法上没有呀
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式