java union pay 代码_Java标记了union / sum类型
使用一個私有構造函數創建一個抽象類,并在類中嵌套“數據構造函數”(左側和右側靜態工廠方法),以便它們可以看到私有構造函數,但沒有其他任何東西可以有效地密封類型.
使用抽象方法either來模擬詳盡的模式匹配,在靜態工廠方法返回的具體類型中適當地覆蓋.實現便利方法(如fromLeft,fromRight,bimap,first,second).
import java.util.Optional;
import java.util.function.Function;
public abstract class Either {
private Either() {}
public abstract C either(Function super A, ? extends C> left,
Function super B, ? extends C> right);
public static Either left(A value) {
return new Either<>() {
@Override
public C either(Function super A, ? extends C> left,
Function super B, ? extends C> right) {
return left.apply(value);
}
};
}
public static Either right(B value) {
return new Either<>() {
@Override
public C either(Function super A, ? extends C> left,
Function super B, ? extends C> right) {
return right.apply(value);
}
};
}
public Optional fromLeft() {
return this.either(Optional::of, value -> Optional.empty());
}
// other convenience methods
}
愉快又安全!沒辦法搞砸了.
關于您嘗試上課的問題Left< L>擴展要么< L,?>,考慮簽名< A,B> < A,B>左(一個值).類型參數B未出現在參數列表中.因此,給定某種類型A的值,您可以獲得Either< A,B>適用于任何類型B.
總結
以上是生活随笔為你收集整理的java union pay 代码_Java标记了union / sum类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html5情人节贺卡,Web工程师的情人
- 下一篇: feign服务器响应数据量过大,Spri