Java 8 Lambda用于匿名类
这里有一个棘手的情况,我想从代码的角度对其进行优化。有没有办法通过Lambda/Java8表达式来缩短以下方法Java 8 Lambda用于匿名类,java,lambda,anonymous-class,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 perso
// total amount of audiences
registry.register("metric.persons.total", new CachedGauge<Integer>(1,TimeUnit.MINUTES) {
@Override
protected Integer loadValue() {
return personService.findAll().size();
}
});
//观众总数
registry.register(“metric.persons.total”),新的CachedGauge(1,TimeUnit.MINUTES){
@凌驾
受保护的整数loadValue(){
return personService.findAll().size();
}
});
CachedGauge类如下所示:
public abstract class CachedGauge<T> implements Gauge<T> {
protected CachedGauge(long timeout, TimeUnit timeoutUnit) {
...
}
protected abstract T loadValue();
...
}
}
公共抽象类CachedGauge实现{
受保护的CachedGauge(长超时、TimeUnit timeoutUnit){
...
}
受保护的抽象T loadValue();
...
}
}
如果有办法的话,那就太好了,这里比较棘手的部分是有一个默认构造函数,并且类是参数化的
最好的,星期五
registry.register("metric.persons.total",
CachedGauge.of(1,TimeUnit.MINUTES, ()->personService.findAll().size() )
);
我认为您可以找到如何实现(long,TimeUnit,Supplier)的
CachedGauge.of
仅为了完成这个线程,我的Utils类如下所示
public class MetricUtils {
public static <T> CachedGauge<T> cachedGauge(long timeout, TimeUnit timeoutUnit, Supplier<T> supplier) {
return new CachedGauge<T>(timeout, timeoutUnit) {
@Override
protected T loadValue() {
return supplier.get();
}
};
}
}
公共类MetricUtils{
公共静态CachedGauge CachedGauge(长超时、TimeUnit timeoutUnit、供应商){
返回新的CachedGauge(超时,超时单位){
@凌驾
受保护的T加载值(){
返回供应商。get();
}
};
}
}
personService是来自匿名类的包含范围,还是从CachedGauge
继承的公共/受保护字段?啊,对不起。。。person服务是外部类中的一个受保护字段,类似于“registry”对象。谢谢,这看起来不错。问题是,CachedGauge是第三方类,我试图不覆盖它。。。但我随后创建了自己的Utils类…@Fritz-没错。这是一个可以放在任何地方的util方法。