加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 内部类的通用数组创建编译错误

发布时间:2020-12-14 19:19:38 所属栏目:Java 来源:网络整理
导读:我正在尝试使用泛型实现链接集合,如下所示. public class A A是集合,B是集合中的元素或节点,具有引用后继者/前任者和项目的数组. 不允许创建数组.我得到的错误是通用数组创建.我是否正确地认为它实际创建的是一个A .B的数组? 如果没有,导致错误的原因是什么

我正在尝试使用泛型实现链接集合,如下所示.

public class A

A是集合,B是集合中的元素或节点,具有引用后继者/前任者和项目的数组.

不允许创建数组.我得到的错误是通用数组创建.我是否正确地认为它实际创建的是一个A< E> .B的数组?

如果没有,导致错误的原因是什么?

如果是这样,我怎么能解决这个问题呢?

我显然省略了大量代码,如果我提供的内容不够,请告诉我.任何意见,将不胜感激.谢谢.

编辑1:我应该提到A中的参数化类型必须与B中相同.因此传递< E>内部类是不可能的,因为它创建E#2并留下A与E#1.

最佳答案
你调用B继承外部类的泛型,因为它不是静态的.而且你不能只是让它静止,因为它也需要E.

因此,你的B.b数组确实需要一个通用的类型,即A< E> .B或者如果你将你的代码改为静态内部类,则A.B< E>. (如果你使用私有静态类B< E>).

在Java中,由于泛型的实现方式(通过擦除),数组的类型没有明确定义.一方面,它应该是B的数组,另一方面,它应该是一个Object数组.

最可行的解决方案似乎是使用Object []并显式转换.
如果你想增加类型安全性,你当然可以使用一个ArrayList< B>,它也在内部使用Object []!

在你特定的代码中,B b1,b2;也可能是一个实际上更快(没有边界检查)并且需要更少内存(没有数组对象;没有大小信息)的选项.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读