我这里遇到了一个棘手的情况,我想从代码角度对其进行优化。有没有办法通过 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 8 Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30540508/