我正在寻找用 lambdas 替换对单独的独立静态初始化函数的需求。例如,我想更换这样的东西......
class Foo {
private static final Set<String> keywords = keywords();
private static Set<String> keywords() {
HashSet<String> s = new HashSet<>();
s.add("AND");
s.add("NOT");
s.add("OR");
return Collections.unmodifiableSet(s);
}
}
使用调用在类加载时就地定义的 lambda 的东西。请注意,懒惰地调用它不是我的目标。
目前,我创建了一个Initializer
带有静态方法的简单类,该方法接受 a Supplier
,调用它并返回值。
Initializer
班级
public class Initializer {
public static <T> T init(Supplier<T> initializer) {
return initializer.get();
}
}
然后在另一个班级:
import static com.whatever.Initializer.init;
class Foo {
private static final Set<String> keywords = init(() -> {
HashSet<String> s = new HashSet<>();
s.add("AND");
s.add("NOT");
s.add("OR");
return Collections.unmodifiableSet(s);
});
}
标准 Java 库中是否已经存在一些东西,所以我不需要提供自己的Initializer
类,或者有什么方法可以简单地定义然后就地执行 lambda?