有什么方法可以将此代码更改为功能代码吗?
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
值。
我有这个方法,我想知道是否有更好的方法来编写它(比如在功能 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
值。