标记接口,用于在Java集合中存储不同的对象

时间:2016-10-20 10:18:57

标签: java design-patterns stack planning marker-interfaces

我正在实现一个带有Java堆栈目标的线性规划器。出于这个原因,我正在使用Stack,我需要在其中存储不同的对象:谓词,运算符,状态。为此,我创建了一个名为Stackable的接口,所以我有一个Stack<Stackable>此界面为空,因为除了必须堆叠所有可堆叠对象外,没有任何东西可以共享。

public Interface Stackable {

}

public class Predicate implements Stackable {
    private String name;
    private List<Parameter> params;
    ...
}

public class Operator implements Stackable {
    private String name;
    private List<Parameter> params;

    private List<Predicate> preconditions;
    private List<Predicate> adds;
    private List<Predicate> deletes;
    ...
}

public class State implements Stackable {
    private List<Predicate> preds;
    ...
}

由于我不喜欢空接口的想法,我开始阅读并与 Marker接口这个术语相遇,我认为这是我的Stackable的情况。我还发现它们一般可以被注释替换,但我从未使用它们,我不知道它们是否可以解决我的问题。

这就是我想知道的原因:

  1. 是否有更好的替代我的设计(通过使用注释或其他方式)?
  2. 如果在某些情况下标记接口仍然是解决方案,我如何区分何时使用它们?

0 个答案:

没有答案