有什么方法可以将此代码更改为功能代码吗?

Is there some way to change this code into functional code?

我有这个方法,我想知道是否有更好的方法来编写它(比如在功能 programming/streams/optional 映射中)?这些 if else 看起来不太好。

public VerificationResult verifyToken(String token) {

    Optional<VerificationToken> verificationToken = repository.findByToken(token);

    if (verificationToken.isPresent()) {
        LocalDateTime tokeExpirationDate = verificationToken.get().getExpiryDate().plusMinutes(tokenExpiryTimeInMinutes);
        if (LocalDateTime.now().isBefore(tokeExpirationDate)) {
            return VerificationResult.VALID;
        } else {
            return VerificationResult.EXPIRED;
        }
    } else {
        return VerificationResult.INVALID;
    }
}

您可以使用 Optional API 将整个操作保存在同一个可选链中,而不是立即展开它。

public VerificationResult verifyToken(String token) {
    return repository.findByToken(token)
        .map(found -> found.getExpiryDate())
        .map(expiryDate -> expiryDate.plusMinutes(tokenExpiryTimeInMinutes))
        .map(tokeExpirationDate -> LocalDateTime.now().isBefore(tokeExpirationDate)
            ? VerificationResult.VALID
            : VerificationResult.EXPIRED
        )
        .orElse(VerificationResult.INVALID);
}

这会更多地利用 Optional,否则您只是将其视为正常的 null 值。