在调用几个重载方法中的任何一个之后调用方法一次

时间:2017-11-29 10:01:45

标签: java generics overloading

在抽象类中,我有一个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放在某个界面或类似的东西中。但我不确定这可能有多大用处。

那怎么可能实现呢?

(另外,如果你碰巧发现任何设计问题,请告诉我,因为我试图在这方面做出改进)

0 个答案:

没有答案