【问题标题】:JavaFX adding abstract class object to arraylistJavaFX将抽象类对象添加到arraylist
【发布时间】:2017-11-04 11:31:43
【问题描述】:

我正在制作一个 JavaFX 应用程序来跟踪公司库存。用户可以添加/删除/修改零件和产品。

part 和 product 类具有属性以及 getter 和 setter 方法,但是 Part 类是 Abstract -

Product              Part<Abstract>

id                   id
name                 name
price                price
min                  min
max                  max
get/set              get/set

我有 3 个显示在表格视图中的数组列表 -

private ObservableList<Part> allParts = FXCollections.observableArrayList();
private ObservableList<Product> products = FXCollections.observableArrayList();
private ObservableList<Part> associatedParts = FXCollections.observableArrayList();

当 Part 是抽象类且无法实例化时,如何将新 Part 添加到 allParts 和 associatedParts 数组列表中?

我如何将某些部件与某些产品相关联?每个产品必须始终有一个或多个关联部件。

【问题讨论】:

  • 您可以将Part 的任何子类型放入列表中。如果Foo是Part的一个子类型,那么如果一个实例是一个Foo,它是一个Part。这是传承的核心和灵魂。请参阅 Liskov 替换原则。
  • Java 抽象列表可能是一个完美的例子。例如:List&lt;String&gt; list = new ArrayList(); 和 List&lt;String&gt; list2 = new LinkedList();

标签: java oop arraylist javafx


【解决方案1】:

按照 cmets 子类 Part 中的建议使用其实例。
还继承Product 以将private ObservableList&lt;Part&gt; associatedParts = FXCollections.observableArrayList(); 添加到它,以跟踪相关部分。

【讨论】:

  • 不客气。请参阅 stackoverflow.com/help/someone-answers(如果您还没有)
猜你喜欢
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
  • 2017-12-12
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 2016-09-26
相关资源
最近更新 更多