微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Java中创建通用数组列表?

如何解决如何在Java中创建通用数组列表?

| 我已经编写了一个接受通用类型的类,并且试图在其中创建通用数组的数组列表。我知道Java无法创建通用数组,但是我也知道有解决方法。下面的代码有什么方法可以工作,还是我吠错了树?
public class IterableContainer<T extends IterableItem> {
    private T[] itemArray;

    // how can i get this following line to work?
    private List<T[]> items = new ArrayList<T[10]>();

    public IterableContainer() {  

... etc ...
忽略这里-事实证明这是一个IDE问题。 留给问题和答案的连续性。 编辑: 这也行不通:
private List<T[]> items = new ArrayList<T[]>();
错误:   令牌\“> \”上的语法错误,此令牌后应为VariableDeclaratorId     

解决方法

        \“ ...吠叫错误的树...,使用
List<List<T>>
。在Java中使用原始数组几乎总是一种代码味道,没有理由不使用适当的收集类。     ,        它工作得很好,您不能使用doesn3ѭ声明,因为数组的长度不会影响其类型。 即
... = new ArrayList<T[]>();
并不是说这是一个好主意,但是应该可以像往常一样对通用数组施加相同的限制。创建要放入列表的内容会让您头疼。     ,        
private List<T[]> items = new ArrayList<T[]>();
在我的机器上工作正常 当您说“我正在为移动设备开发”时....您是否以j2me为目标? j2metargetng中不支持泛型     ,        这是Java中的有效声明(根据spec),并且可以使用javac进行编译,就像其他人评论的那样。
public class IterableContainer<T extends IterableItem> {
  private T[] itemArray;

  private List<T[]> items = new ArrayList<T[]>();// valid

  ..........  

}
我相信您看到的错误不是从Eclipse发出的,可能是来自在Eclipse中配置的Android SDK。如果您在Eclipse中创建Java项目,则此代码应该可以正常工作。如果您在Eclipse中的Android项目中使用此功能,则很可能会遇到此问题。从Android项目运行此代码时遇到此错误:
#  guarantee(_name_index != 0 && _signature_index != 0) failed: bad constant pool index for fieldDescriptor
不幸的是,听起来您受到Android项目的限制。     ,        您尚未在此代码中定义T。 如果要创建泛型类,则需要编写:
public class <T extends IterableItem> IterableContainer...
代码中的下一个问题是您试图在构造ArrayList的过程中对其进行初始化。是不可能的。您应该写:
private List<T[]> items = new ArrayList<T[]>();
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。