可以将以下java代码转换为Lambda表达式吗?
我需要知道以下代码可以转换为lamda表达式可以将以下java代码转换为Lambda表达式吗?,lambda,java-8,Lambda,Java 8,我需要知道以下代码可以转换为lamda表达式 private class K<D extends BaseDose<I>, I extends DoseInstance> implements Predicate<Prescription<D, I>> { @Override public boolean test(final Prescription<D, I> input) { ret
private class K<D extends BaseDose<I>, I extends DoseInstance>
implements Predicate<Prescription<D, I>>
{
@Override
public boolean test(final Prescription<D, I> input)
{
return DepositType.DATE == input.getBaseDeposit().getDepositType();
}
}
私有类K
实现谓词
{
@凌驾
公共布尔测试(最终处方输入)
{
return DepositType.DATE==input.getBaseDeposit().getDepositType();
}
}
您可以将lambda表达式指定给谓词
变量,而不是创建实现谓词
的类(您的K
类)
例如:
Predicate<Prescription<BaseDose<DoseInstance>, DoseInstance>> pred =
p -> DepositType.DATE == p.getBaseDeposit().getDepositType();
谓词pred=
p->DepositType.DATE==p.getBaseDeposit().getDepositType();
如果需要包含多个语句的lambda表达式,可以编写:
Predicate<Prescription<BaseDose<DoseInstance>, DoseInstance>> pred =
p -> {
final SigningStatus signingStatus = p.getSigningStatus();
return !p.isReplacedByLatest() && SigningStatus.INVALIDATED.equals(signingStatus);
};
谓词pred=
p->{
最终签名状态SigningStatus=p.getSigningStatus();
return!p.isReplacedByLatest()&&SigningStatus.INVALIDATED.equals(SigningStatus);
};
虽然这可以简化为一条语句:
Predicate<Prescription<BaseDose<DoseInstance>, DoseInstance>> pred =
p -> !p.isReplacedByLatest() && SigningStatus.INVALIDATED.equals(p.getSigningStatus());
谓词pred=
p->!p、 isReplacedByLatest()&&SigningStatus.INVALIDATED.equals(p.getSigningStatus());
谓词
是一个功能接口,所以是的。整个过程可以写成input->DepositType.DATE==input.getBaseDeposit().getDepositType()
@ernest\k这不是一个答案吗?对于OP:Predicate@Eran'内部测试,如此代码'final SigningStatus SigningStatus=input.getSigningStatus();回来!input.isReplacedByLatest()&&SigningStatus.INVALIDATED.equals(SigningStatus);也可以转换成lambda吗?