【问题标题】:Array list of abstract class?抽象类的数组列表?
【发布时间】:2016-04-26 18:37:00
【问题描述】:

我想知道如何创建扩展某些抽象类的类的数组列表。假设我有抽象类:

abstract class Product{
}

还有一些扩展它的类:

public class Toy extends Product{
}

public class TV extends Product{
}

我想实现一个扩展抽象类Product 的类列表。我该怎么做?

【问题讨论】:

  • 你能澄清一下类的数组列表吗?
  • 我想要一个可以存储多个产品的数组。
  • 除非您尝试覆盖某些特定方法,否则 TV 和 Toy 更像是 Product 的实例,而不是类。

标签: java


【解决方案1】:

你需要:

final List<Product> list = new ArrayList<>();

这意味着您有 List 类型的 extendsimplements Product

你应该使用:

List<? extends Product> list = new ArrayList<>();

因为list.add会出现编译错误。

【讨论】:

    【解决方案2】:

    这就是您要找的东西?

    List<? extends Product> list
    

    【讨论】:

    • 没错!非常感谢!
    • @uksz List&lt;Product&gt; 也适用于任何情况 - 在这种情况下,? extends 不是必需的。这仅在接收特定类型的List 的方法中是必需的。
    • 事实上,? extends 在这种情况下很可能是有害的。
    • 这取决于用例。它也可以实现为通用的&lt;T extends Product&gt;,这要好得多,或者只是@BoristheSpider 建议的List&lt;Product&gt;
    • @SergheyBishyr 这两个例子都是List&lt;Toy&gt; List&lt;TV&gt;,你不知道你有哪个。在这种情况下,这肯定是 错误 方法,因为 OP 想要一个 List 而不是可以包含 两个 ToyTV
    猜你喜欢
    • 1970-01-01
    • 2021-08-23
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多