私は、それぞれが異なる型と戻り値の型を使用するいくつかの異なるクラスによって実装されるインターフェイスを持っています。戻り値の型は、メソッドジェネリック型から推測できますが、実装には問題があります。ジェネリックインターフェイスを実装するときに具体的な型を返す方法
インタフェースが現在のようになります。私は、戻り値の型がどうあるべきかを知っIMPLで
public class TransformUtilsXCPD implements TransformUtilsBase<foo> {
bar transformToNhin(foo request, BrokerContext brokerContext) {
code here
}
:
public interface TransformUtilsBase<T> {
Class<?> transformToNhin(T request, BrokerContext brokerContext);
}
私がするImplクラスが見えるようにしたいです。インタフェースレベルでは、教える方法がありません。
インターフェイスをすべてまとめて同じメソッド名でいくつかのクラスを作成するだけですが、すべて同じ目的のために使用されているため、正式化したかったのです。種類のみが異なります。
または、これらのクラスはutil操作なので、大きなクラスの静的メソッドを持つことはできますが、同じ名前の非常に多くのメソッドとすべての必要なヘルパーメソッドを持つクラスを扱うのが面倒になっていました同じ名前)。
私は静的メソッドを実行することはできませんが、インターフェイスを実装することは機能を正式化するための最良の選択肢のようです。私は戻り値の型に対処する方法を理解できません。
編集:さらなる混乱を避けるために、完全な例を示すようにインターフェイスで拡張してください。あなたにも戻り値の型のための型を宣言しない理由 インタフェース
public interface TransformUtilsBase<T, U> {
Class<?> transformToNhin(T request, BrokerContext brokerContext);
Class<?> transformToXca(U request, BrokerContext brokerContext);
}
Implを
public class TransformUtilsXCPD implements TransformUtilsBase<Foo, Bar> {
Baz transformToNhin(Foo request, BrokerContext brokerContext) { code here }
Biz transformToXca(Bar request, BrokerContext brokerContext) { code here }
}
のサブクラスであるあなたは、実際のバズクラス、またはバズのインスタンスを返すようにしようとしています
として宣言します実装するクラス?あなたの編集はそれが第二のものかもしれないことを暗示します。 – Alex
良い点。私は変換プロセス中に作成されたBazクラスの特定のインスタンスを返そうとしています。ワイルドカード表記法は、戻り値の型を決定できるメソッド変数に対してのみジェネリックを提供するという意図した意図を伝えるための最良の方法です。 –