private void validatePGTimingRestrictions(
Listing listing,
ListingAutoVerificationResponse listingAutoVerificationResponse) {
if (Optional.ofNullable(listing.getLastEntryTime()).isPresent()
&& Optional.ofNullable(listing.getTimingRestrictions()).isPresent()
&& !listing.getTimingRestrictions()) {
listingAutoVerificationResponse.getRejectReasons()
.add(ListingAutoVerificationErrorMessages.PG_LISTING_TIMING_ERROR);
}
}如何使用链接选项和orElseGet优化这段代码。listing.getTimingRestrictions()返回布尔值,listing.getLastEntryTime()从列表返回String & add方法也返回布尔值。
发布于 2019-03-13 10:56:40
您可以将 Optional 映射到一个完全不同的值,允许您链接空检查:
Object a, b, c;
....
Optional.ofNullable(a) // null-check for 'a'
.map(x -> b) // null-check for 'b'
.map(x -> c) // null-check for 'c'
.ifPresent(x -> ...) // do something with a,b,c就你而言:
Optional.ofNullable(listing.getLastEntryTime())
.map(x -> listing.getTimingRestrictions())
.filter(x -> !x)
.ifPresent(x -> ... ); // do something with the listing发布于 2019-03-13 10:37:27
你为什么要在那里使用可选的?
if (listing.getLastEntryTime() != null && !listing.getTimingRestrictions()) {
listingAutoVerificationResponse.getRejectReasons()
.add(ListingAutoVerificationErrorMessages.PG_LISTING_TIMING_ERROR);
}因为getTimingRestrictions是布尔型的,而且是一个基本类型,所以它不应该是null。
发布于 2019-03-13 10:37:52
如果我一切都做对了..。:
if(listing.getLastEntryTime() != null){
Optional.ofNullable(listing.getTimingRestrictions())
.filter(x -> !x)
.ifPresent(x -> <do whatever you want with x here>)
}https://stackoverflow.com/questions/55139648
复制相似问题