2017年5月18日 星期四 晴
泛型还是没有整完,其中发现对基本的名词描述理解有问题。实在有些不太注意细节。在原文中,作者描述了很多细节性的东西,比如说?是什么,?可以认为是某类。
list<?> 就是某类的列表,或者说装了某东西的篮子。那么这个篮子只能读出某东西,不能写入某东西。 为什么要存在这样的通配符号,我认为设计目的是为了在让泛型参数可以接受父类列表参数。比如
|
|
这样,在泛型中就可以操作更广泛的类。? extends T 标示T的某个子类,? super T 标示T的某个父类。
如果listA 是T的某个子类的列表,那么我们可以从这个列表中获取到T,但是因为我们不知道列表究竟存入的是哪个子类,所以我们无法向其中加入元素。
如果listB是T的某个父类的列表,那么我们可以向这个列表中放入T元素和T的子类元素,但是因为我们不知道具体是哪个父类,说以我们只能返回Object最上级父类。
这样概念就清晰多了。有时候,个人感觉把东西写下来或者读出来或者说出来,那么感觉理解中不明白的地方就会变得有所领悟。这个方法应该也可以用在其他一些地方来完成一些有意思的东西。
为什么要有这个抽象的范式,我觉得主要的场景就是调用范例方法时,写入的参数可以不仅仅是List
|
|
是错误的。
