使用函数作为参数的java
public static <E extends EntityBase, FE>
FE findForeignEntity(E entities, Function<E, Long> fnForeignId, Function<Long, FE> fnFindIdIn) {
if (entities == null) return null;
Long fid = fnForeignId.apply(entities);
return fnFindIdIn.apply(fid);
}
City city = Utils.findForeignEntity(candidate,
c -> c.getAddress() != null ? c.getAddress().getCity() : null,
fid -> cityRepo.findOne(fid));
“fid”代表什么?我不熟悉java中的这种用法。 谁能给我一个线索吗
# 1 楼答案
在方法
findForeignEntity
中传递3个参数,第一个参数是entities
,它是方法fnForeignId
的参数。 方法fnForeignId
的结果是fid
,而fid
是方法fnFindIdIn
的输入,该方法返回FE
(外部实体)在这段代码中,让您困惑的可能是lambdas。我会尽量使它简单。方法} ,需要定义
findForeignEntity
的两个参数是Function
,这是一个^{方法
fnForeignId
的定义是这有点像
方法
fnFindIdIn
的定义是这可以理解为
这些都是在Java8中引入的lambda
正如@GhostCat告诉我们的,fid代表外国id
# 2 楼答案
显然,fid缩写为“外来id”
如果您询问->;语法:那是一个lambda expression。他们的主要目标是:
但很明显,这个概念背后有很多东西
# 3 楼答案
你在找lambda表达式吗?看看上面的java's documetation。lambda是将函数用作参数的一种很好的方法,但它永远只能是一行函数。一种快速的小方法