永发信息网

关于泛型和通配符类型的区别

答案:2  悬赏:80  手机版
解决时间 2021-02-08 07:48
关于泛型和通配符类型的区别
最佳答案
感觉是有点问题,像是设计上的问题。

People p=new People();
List list=new ArrayList();
list.add(p);

像你这个代码,如果list.add(p);加的不是一个People,那会怎么样呢?假设另一个类Man继承于User,且Man与People没从属关系。那么然后按照List list来理解,将Man加到list里面应该是没问题的吧。可是另一方面我们定义的list是一个new ArrayList(),这样看的话把Man加到list里面貌似就呃掉了吧。

而按照freish的说法也是不那么对的样子。因为如果存在这么一个函数f(List LN),在这里函数里,我们限制了输入的参数LN必须只能存放数字类Number,这样一个限制应该是很有用的吧,可以避免你把一个List或者其他东西传给函数f()。如果按照freish的方法,我们把? extends Number直接写为Number的话,那么你f(new ArrayList())这样写的话编译器会华丽丽的报错,所以这么改又是不对的。

在你这个问题里面的话,把list写出 List list 是没什么实际意义的,但是如果像是在上面函数f(List LN)里的话确是有意义了。也就是说理论上来说,通配...感觉是有点问题,像是设计上的问题。

People p=new People();
List list=new ArrayList();
list.add(p);

像你这个代码,如果list.add(p);加的不是一个People,那会怎么样呢?假设另一个类Man继承于User,且Man与People没从属关系。那么然后按照List list来理解,将Man加到list里面应该是没问题的吧。可是另一方面我们定义的list是一个new ArrayList(),这样看的话把Man加到list里面貌似就呃掉了吧。

而按照freish的说法也是不那么对的样子。因为如果存在这么一个函数f(List LN),在这里函数里,我们限制了输入的参数LN必须只能存放数字类Number,这样一个限制应该是很有用的吧,可以避免你把一个List或者其他东西传给函数f()。如果按照freish的方法,我们把? extends Number直接写为Number的话,那么你f(new ArrayList())这样写的话编译器会华丽丽的报错,所以这么改又是不对的。

在你这个问题里面的话,把list写出 List list 是没什么实际意义的,但是如果像是在上面函数f(List LN)里的话确是有意义了。也就是说理论上来说,通配符是被设计成一个有用的东西的,也就是用来限定传入函数的参数的(或者赋值时来限定等号右边的)。而通过通配符来限定是某某某的子类或者超类在list这种容器应用的时候却产生了矛盾,也就是上面说的你本来只是想把People给加到list的,结果却一不小心把人家Man给加进来了。这样看来的话,java应该是考虑到这种情况了,所以就? extends User 成什么乱七八糟的 capture#105 of ? extends User类型了。泛型产生的原因就是当时的list这些容器能把任何类型的东西存进去又再拿出来(因为是Object),这样容易产生混乱。所以就产生了泛型来限制和检查类型。而这种限制却在这些特殊的情况下面产生了矛盾。

嗯,所以总结来说,你不能这么写代码,不能把要操作到泛型参数的方法的类声明为带有通配符的模式。还有一些例子看起来好似能通过编译的,实际确是不行的。比如说
class People extends User{
void f(K k){System.out.println("f(K k)");}
void f(V v){System.out.println("f(V v)");}
}
在这里f有着两个不同类型参数K和V,看起来好像没事儿的样子。但是这是不能编译成功的。因为如果K是String而V也是String的时候,那么两个函数不就冲突了么?
全部回答
t自定义泛型和?通配符泛型 1.在整个类中只有一处使用了泛型,使用时注意加了泛型了参数不能调用与参数类型
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
急啊!从昨天开始身上长了一点像痘痘一样的东
三键圆号的"第四转阀"是干什么的呀?
子淏广告装饰这个地址在什么地方,我要处理点
请问扣扣会员为什么赠送不了给好友
一种直角三角形的小旗,一条直角边长15厘米,
用申通邮寄电脑安全吗
王者国际体育舞蹈学校怎么去啊,我要去那办事
瑞艺轩地址在哪,我要去那里办事
常说的辩论会主辩手是指几辩
主域名如何绑定到子目录?????
阿有什么植物草之类的吃了对眼睛好的
星瀚舞蹈艺术中心地址有知道的么?有点事想过
从同一植物不同部位取两叶片,测定甲叶自由水
恒达时尚宾馆怎么去啊,有知道地址的么
一套刺客符文怎么配
推荐资讯
广西容县仿古街作文请按照你的游览顺序来描写
形容秋叶子的成语
【爱心树】爱心树读后感要有点内容明天就要交
恒美佳人地址在哪,我要去那里办事
htc连不上wifi
【户对什么】门当户对到底是指什么
梦丽美容养生馆地址在什么地方,我要处理点事
某班有49名同学,其中男同学的2/5和女同学的3/
宝山实验学校地址有知道的么?有点事想过去
我有两个孩子落户口时已经交罚款了,现在想把
华琦东方艺术中心怎么去啊,我要去那办事
小雨点网吧地址在什么地方,想过去办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?