如何使用Java 8编写以下函数?转换成Java 8函数
private static final Function<String, Integer> EmpIdToInt = (id) -> {
return Integer.valueOf(ACI.generate("emp",id).revealId().intValue());
};
在Java 8中编写此函数是否有更好的方法?
任何人都可以帮忙吗?
如何使用Java 8编写以下函数?转换成Java 8函数
private static final Function<String, Integer> EmpIdToInt = (id) -> {
return Integer.valueOf(ACI.generate("emp",id).revealId().intValue());
};
在Java 8中编写此函数是否有更好的方法?
任何人都可以帮忙吗?
有没有更好的方法在java 8编写这个函数?
你已经在使用Java 8的功能和是的,你可以使代码通过删除(
)
短,因为只有一个PARAM和删除{
}
,因为只有一个执行的语句。
,你可以把它简化,像这样:
private static final Function<String, Integer> EmpIdToInt = id -> Integer.valueOf(ACI.generate("emp",id).revealId().intValue());
注:我带走private static final
打印页面。
IF您revealId
是一个整数,你可以简化为:
Function<String, Integer> EmpIdToInt = id -> ACI.generate("emp",id).revealId();
OR时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);
}
您正在使用8,有什么问题? – ChiefTwoPencils
在java 8中编写这个函数有没有更好的方法? – zubairm
'Integer.valueOf()'是不必要的。 – shmosel