当前位置:  开发笔记 > 编程语言 > 正文

Java泛型:List <Container <?>> = new LinkedList <Container <Double >>()被禁止?

如何解决《Java泛型:List<Container<?>>=newLinkedList<Container<Double>>()被禁止?》经验,为你挑选了1个好方法。

为什么用Java,我可以写

List list = new LinkedList();

但不是

List> list = new LinkedList>();

容器就是这样的东西

public class Container { ... }

这是因为我有一个接受a的方法,List>我想使用Arrays.asList将参数传递给它:

process(Arrays.asList(new Container(), new Container()));

但是语言不允许这样做,因为它推断出的类型Arrays.asListList>,而且不能分配List>.

如果我将一个String参数化的容器添加到调用中,

process(Arrays.asList(new Container(), new Container()));

它仍然不起作用,因为它推断出List>>Arrays.asList 的类型.只有当我传入既不可比较也不可序列化的东西时,它才能正常工作.

当然,我可以放一个演员并让编译器关闭,但我想知道我在这里做错了什么.



1> kdgregory..:

每个参数化必须是通配符:

List> list = new LinkedList>();

编辑:我正在通过Angelika Langer的常见问题解答进行解释,但没有找到一个(它可能在那里,但隐藏在500页的某个地方).

考虑这一点的方法是每个参数化都是独立的,除非您明确说明,否则编译器不会推断出有关参数化的信息.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有