可以将以下java代码转换为Lambda表达式吗?

可以将以下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

我需要知道以下代码可以转换为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)
    {
      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吗?