【发布时间】:2020-11-17 10:31:25
【问题描述】:
我有一个实体,它的 info1 或 info2 取决于其类型,但只应填写其中一个信息。这些信息具有完全不同的属性。所以我的实体看起来像这样:
public class SomeEntity {
private SomeEntityType type;
private Info1 info1;
private Info2 info2;
}
所以我的问题是可以创建一些空的抽象类 Info 并从中继承 Info1 和 Info2 吗? (因为我认为此类 Info 类的数量会增加,我需要将所有此类信息添加到 SomeEntity)
public class Info1 extends Info {
/* some properties */
}
public class Info2 extends Info {
/* some properties */
}
public class SomeEntity {
private SomeEntityType type;
private Info info;
}
【问题讨论】:
-
如果技术上可行,为什么不呢?特别是,如果您要在未来实现他们的共同行为。
-
@KonradRudolph 这真的取决于空班有多胖? OP 似乎需要将他们的
SomeEntityType type直接移动到Info类中(这可能是最好的sealed然后在Java 15 中)并删除SomeEntity。这样他们就根本不需要空班了。 -
好的,您的评论已删除。
-
@fluffy 我误读了这个问题。我的评论在这里根本不适用(事实上,如果有任何 OP 在这里避免使用胖接口),因此删除。
标签: java oop generics design-patterns