如何使用Java 8编写以下函数?
private static final Function<String, Integer> EmpIdToInt = (id) -> {
return Integer.valueOf(ACI.generate("emp",id).revealId().intValue());
};在Java8中有没有更好的方法来编写这个函数?
有人能帮上忙吗?
发布于 2017-04-21 12:17:29
在Java8中有没有更好的方法来编写这个函数??
您已经在使用java8的特性,是的,您可以通过删除
( ),因为只有一个参数,删除{ },因为只有一条执行语句。
你可以这样简化它:
private static final Function<String, Integer> EmpIdToInt = id -> Integer.valueOf(ACI.generate("emp",id).revealId().intValue());发布于 2017-04-21 14:35:47
注意:我取走了private static final来打印页面。
如果你的revealId是一个整数,你可以简化为:
Function<String, Integer> EmpIdToInt = id -> ACI.generate("emp",id).revealId();或当revealId不是整数,但int将自动装箱到Integer时,因此您可以删除Integer.valueOf方法调用:
Function<String, Integer> EmpIdToInt = id -> ACI.generate("emp",id)
.revealId().intValue();或您可以使用curry方法逐步链接函数:
注意:X类是声明revealId方法的地方,Y类是声明intValue方法的地方。
// revealId is an Integer
Function<String, Integer> EmpIdToInt = curry(ACI::generate, "emp")
.andThen(X::revealId);
// revealId is not an Integer
Function<String, Integer> EmpIdToInt = curry(ACI::generate, "emp")
.andThen(X::revealId)
.andThen(Y::intValue);
private static <T, A, R> Function<T, R> curry(BiFunction<A, T, R> it, A arg) {
return other -> it.apply(arg, other);
}https://stackoverflow.com/questions/43533806
复制相似问题