1

同じメソッド名を使用してTオブジェクトをオブジェクトに変換する汎用コンバーター インターフェイスを作成しようとしています。Uconvert

public interface GenericConverter<T, U> {
  T convert(U fromObject);
  U convert(T fromObject);
}

もちろん、ジェネリック消去は、コンパイル中に両方のメソッドを次のように変換します。

convert(object fromObject);

したがって、どちらの方法でも同じ消去が行われるため、コンパイル中にエラーが発生します。

私の例では、 と に対して常に異なるオブジェクト タイプを使用することは論理的TですUT同じメソッド名 (convert) を保持し、とUが異なる型であるという事実をカプセル化し、それぞれの場合に適切なメソッドが確実に呼び出されるようにする方法はありますか?

4

3 に答える 3

1

T2 つの型とが 2 つの別個の型階層に基づいていない限りU(つまり、それぞれが常に何らかの別個のスーパークラスを持っている)、2 つのメソッドを同じ名前にする方法はありません。その場合、意味的にも意味がありません-合理的な問題で2つのタイプを区別できない場合、2つのメソッドの意味的な違いは何ですか?

提案されたメソッドの名前変更とは別に、インターフェイスにそのようなメソッドを 1 つだけ配置し、代わりに and を使用してGenericConverter<T, U>両方GenericConverter<U, T>の方法を変換することも検討してください。

于 2017-01-10T13:30:59.477 に答える