用于匿名类的 Java 8 Lambda

标签 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();
    }
});

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/

相关文章:

java - YouTube 视频无法在 WebView 中加载

java - 栈和队列(读代码)

java - 如何使用 Lambda 表达式 .reduce() 方法减少给定列表

java - 在 Java 中执行 while 循环更改变量

java - 使用泛型添加数字和字符串的函数

c# - 创建具有 3 个条件的 Lambda 表达式

c++ - 匿名类可以用作 C++ 中的返回类型吗?

java - 获取匿名内部类的Class<?>对象

Java 匿名类和垃圾收集器

java - 这段代码的含义是什么?与多态性相关