在抽象类中,我有一个Predicate
字段,它意味着是未知数量的其他Predicate
的组合。加入谓词的工作正常,但我试图通过某种方式知道谓词何时被初始化(或者更确切地说,只是一种了解谓词是否已经被初始化的方法)。
以下是我所谈论的一个简短例子:
public abstract class LimitedSystem implements Moveable {
private Predicate<Double> limits;
private final boolean initialized;
public void setLimits(SingleLimit... limits) {
List<Predicate<Double>> limitsList = Arrays.asList(limits);
this.limits = limitsList.stream().reduce(Predicate::and).orElse(x -> true);
}
public void setLimits(TwoLimits limits) {
this.limits = limits;
}
...
我正在寻找方法将initialized
设置为true
一次(只有一次,因此final
。我认为我使用它正确)setLimits
被称为(他们超载)。
我有其他setLimits
方法,但为了通用代码,我不想在每个重载方法的末尾添加initialized
。
所以我的问题是,在调用任何initialized
方法之后,我怎么能以通用的方式设置setLimits
的值。
我的第一个想法是尝试将setLimits
包装在一些通用方法中,该方法通过它获取的参数调用正确的重载,然后在该方法中更改initialized
。但我不确定这是不是一个好主意。
我从另一个问题 1 得到的另一个想法是将setLimits
放在某个界面或类似的东西中。但我不确定这可能有多大用处。
那怎么可能实现呢?
(另外,如果你碰巧发现任何设计问题,请告诉我,因为我试图在这方面做出改进)