Can I add to a generic collection of type A values of type B ,which extends A, without any special syntax?

最后都变了- 提交于 2019-12-02 01:13:42

Your code specified that it only accepts a Collection with the same type parameter as the Stack has.

You should write the pushAll method like this:

public void pushAll (Collection<? extends E> src)

This means that you expect a Collection of some type that extends E (i.e. you don't care what specific type it is, but it must be E or some sub-type of it).

Look at the definition of Collection.addAll(): it's defined in the same way.

the problem is that you have two types but only one generic representation (E) so E is Number as well as Integer. Thats confusing him. You need to have the same type for the collection. Rewrite it to

pushAll(Collection<K> src) 

and cast K to E.

Björn Pollex

This problem is due the fact that collections in java are not covariant. There are numerous question on SO about it, such as this one.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!