我这里遇到一个棘手的情况,我想从代码角度进行优化。是否可以通过Lambda / Java8表达式缩短以下方法?

// total amount of audiences
registry.register("metric.persons.total", new CachedGauge<Integer>(1,TimeUnit.MINUTES) {
    @Override
    protected Integer loadValue() {
        return personService.findAll().size();
    }
});


CachedGauge类看起来像这样:

public abstract class CachedGauge<T> implements Gauge<T> {
    protected CachedGauge(long timeout, TimeUnit timeoutUnit) {
        ...
    }

    protected abstract T loadValue();
        ...
    }
}


真想知道是否有办法,这里的棘手部分是有一个默认的构造函数,并且该类已参数化。

最好,星期五

最佳答案

registry.register("metric.persons.total",
    CachedGauge.of(1,TimeUnit.MINUTES, ()->personService.findAll().size() )
);


而且我认为您可以弄清楚如何实现CachedGauge.of(long, TimeUnit, Supplier<T>)

关于java - 匿名类的Java 8 Lambda,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30540508/

10-10 18:43