JPA:是否可以使用超类构造函数将子类类型作为参数传递?

时间:2017-04-25 01:31:25

标签: java generics jpa inheritance polymorphism

假设我有一个这样的继承结构:

abstract class Fruit {}

class Apple extends Fruit {}

class Orange extends Fruit {}

在我的应用程序中,我有一个采用"类型"像这样的论点:

public Fruit getFruit(String type) {
    if (type.equals("Apple")) {
      return new Apple();
    } else if (type.equals("Orange") {
      return new Orange();
    } else {
      return null;
    }
  }

我的问题是,我怎样才能在这里一般性地初始化水果实例,以便我没有通过这个if / else链?有没有这样的方法,我可以有一个Fruit()构造函数,它接受一个参数,指定要初始化的子类?喜欢"新水果(" Apple")"。

为过度简化而道歉,但这是我的问题的关键。我应该提一下,Fruit和它的孩子实际上是 TABLE_PER_CLASS JPA继承策略类型来自 FruitPicker 中的列实体。如果有帮助,每个水果都会引用生成它的 FruitPicker

0 个答案:

没有答案