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中的这种用法。 任何人都可以给我一些线索。
答案 0 :(得分:1)
在方法findForeignEntity
中,您传递了3个参数,第一个是entities
,它是方法fnForeignId
的参数。
方法fnForeignId
的结果是fid
,fid
是方法fnFindIdIn
的输入,它返回FE
(外国实体)。
City city = Utils.findForeignEntity(candidate,
c -> c.getAddress() != null ? c.getAddress().getCity() : null,
fid -> cityRepo.findOne(fid));
在此代码中,您可能会感到困惑lambdas。我会尽量简单。您的方法findForeignEntity
的两个参数是Function
,它是functional interface
,需要定义。
方法fnForeignId
的定义是
c -> c.getAddress() != null ? c.getAddress().getCity() : null
类似
return c.getAddress() != null ? c.getAddress().getCity() : null
方法fnFindIdIn
的定义是
fid -> cityRepo.findOne(fid)
可以像
那样读取return cityRepo.findOne(fid)
这些都是在Java8中引入的lambdas
正如@GhostCat告诉fid代表外国身份。
答案 1 :(得分:0)
显然,fid缩写&#34;外国id&#34;。
如果你问的是 - &gt;语法:这是lambda expression。他们的主要目标是:
Lambda表达式允许您更紧凑地表达单方法类的实例。
但显然有很多&#34;落后&#34;那个概念。
答案 2 :(得分:0)
你在寻找一个lambda表达式吗?看看java's documetation就可以了。 Lambdas是一种使用函数作为参数的好方法,但它只能是一行函数。快速解决问题的方法。