用于匿名类的Java 8 Lambda

Fri*_*itz 2 java lambda anonymous-class

我有一个棘手的情况,我想从代码的角度优化.有没有办法通过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();
    }
});
Run Code Online (Sandbox Code Playgroud)

CachedGauge类看起来像这样:

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

    protected abstract T loadValue();
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

看看是否有办法真的很棒,这里棘手的部分是有一个默认的构造函数,并且类是参数化的.

最好的,周五

Zho*_*gYu 5

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

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