【问题标题】:Why cannot I create generic arraylist member of generic class?为什么我不能创建泛型类的泛型 arraylist 成员?
【发布时间】:2020-09-17 19:56:58
【问题描述】:

我想添加方法来返回列表或特定元素,并且我希望它可以与任何泛型类一起使用。为什么 Java 不允许这样做?

class ArrayListBuilder<E>{
    private ArrayList<E> a_list=new ArrayList<>();
}

【问题讨论】:

  • 欢迎来到 Stack Overflow。请通过tour 了解 Stack Overflow 的工作原理,并阅读How to Ask 以了解如何提高问题的质量。然后edit你的问题包含你的源代码作为minimal reproducible example,它可以被其他人编译和测试。您的代码工作正常,可以编译和使用。你有什么问题?
  • 看看这是否回答了你的问题。 stackoverflow.com/questions/4492950/…
  • @Progman 认为 一个 MVC。没有比这更简单、更可验证和更完整的了。该问题的实际问题是,除了通用的“java不允许这样做”之外,OP没有说明该代码会发生什么。
  • 我的代码抛出错误 E 无法解析为类型
  • @SamratDas 您缺少java.util.ArrayList 的导入。这是您得到您所说的代码错误的唯一方法。此外,您应该阅读所有的错误消息,而不仅仅是最后一条。

标签: java class generics arraylist collections


【解决方案1】:

我试图编译你的代码并得到这些错误

ArrayListBuilder.java:2: error: cannot find symbol
    private ArrayList<E> a_list=new ArrayList<>();
            ^
  symbol:   class ArrayList
  location: class ArrayListBuilder<E>
  where E is a type-variable:
    E extends Object declared in class ArrayListBuilder
ArrayListBuilder.java:2: error: cannot find symbol
    private ArrayList<E> a_list=new ArrayList<>();
                                    ^
  symbol:   class ArrayList
  location: class ArrayListBuilder<E>
  where E is a type-variable:
    E extends Object declared in class ArrayListBuilder
2 errors

你可以看到实际上有两个错误,第一个意味着你需要导入java.util.ArrayList。一旦你这样做了,你的代码编译得很好。所以把你的代码放在第一行

import java.util.ArrayList;

TL;DR:您的问题的解决方案是阅读所有的错误消息。不只是最后一个。

【讨论】:

    猜你喜欢
    • 2019-10-20
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    相关资源
    最近更新 更多