我想在我的作業中撰寫更多功能性的 java 代碼。但是我怎么能重構像波紋管這樣的東西。
該代碼有效,它必須決議像 100/100 這樣的字串并回傳一對整數。
private static final Pattern pattern = Pattern.compile("^(\\d)(/)(\\d)$");
public static Optional<Pair<Integer, Integer>> foo(String str) {
var matcher = pattern.macher(str != null ? str : "");
return matcher.find() && matcher.groupCount() == 3 ?
Optional.of(new Pair(Inreger.parseInt(matcher.group(1),
Inreger.parseInt(matcher.group(3)))):
Optional.empty();
}
uj5u.com熱心網友回復:
public static Optional<Pair<Integer, Integer>> foo(String str) {
return Optional.ofNullable(str)
.map(str => pattern.macher(str))
.filter(matcher => matcher.find() && matcher.groupCount() == 3)
.map(matcher => new Pair(
Inreger.parseInt(matcher.group(1),
Inreger.parseInt(matcher.group(3))
));
}
最好總是從Optional避免所有空檢查的方式開始。通常Optional.of()或Optional.empty()應該避免只產生最終結果:
Optional.of()沒有任何進一步的操作是代碼異味。這意味著您從來不必做任何需要空檢查的事情。是的,有這種情況,但很少見。如果您發現此類代碼,請務必仔細查看。Optional.empty()類似。這意味著您甚至不需要檢查空值,只需回傳一個空結果。好吧,在某些情況下您可以采用此快捷方式,但通常目的Optional是從某事開始并對其進行操作。操作的結果然后可以產生一個空的結果。
uj5u.com熱心網友回復:
處理空引數的函式式方法
對于空引數,您可以執行以下操作。這里的第二個引數是一個空字串,如果str為空則賦值。
public static Optional<Pair<Integer, Integer>> foo(String str) {
str = Objects.requireNonNullElse(str, "");
...
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/354174.html
上一篇:帶有模板的Yeoman復制目錄
下一篇:以函式方式重寫嵌套的三元運算子
