Javaでどちらかのモナドを実装したいと思います。 次のコードでエラーが発生しますErasure of method Either(V) is the same as another method in type Either<T,V>
TとVが同じタイプに消去されてエラーが発生することはありません。コレクションなしでジェネリックスを使用するときの型消去エラー
public class Either<T, V> {
private T t;
private V v;
public Either(T t) {
this.t = t;
}
public Either(V v) {
this.v = v;
}
}
関連の記事ではなく、重複:以下の記事は、2つのコンストラクタ、Collection<T>
と1とCollection<V>
で別の対処
。問題は、コンストラクタの両方のパラメータが型削除されてCollection
になるため、同じ型シグニチャがあることです。
プライマリタイプが異なるため、私の投稿は重複していません。
- Erasure of method is the same as another method in type
- Java name clash error, a method has the same erasure as another method
次のポストアドレス法、compareTo(Real r)
と1とcompareTo(Object o)
と別の種類T
とV
は関連はありませんので、私のポストは、重複しません少なくとも私が見ている方法ではない。
質問
なぜこのタイプの消去エラーが発生しますか。
JavaでEither monadを実装するにはどうすればこのエラーを解決できますか?
私はこれは自己解答型の質問(これは問題ありません:)ですが、実際に質問にどこかの質問が含まれていると助かります... –