メソッドの出力に対して完全にジェネリックな型を宣言するのに問題があります。状況は次のとおりです。
class A<S,T>{
public Callback<B<S,T>,C<S,T>> method();
}
私のコードでは、これらのいずれかを持っています。
A<String, ?> instance;
しかし、私が電話するとき
result = instance.method()
コンパイラを満足させる唯一の方法は、宣言することです
Callback<?, ?> result = instance.method()
しかし、ジェネリックをより具体的にして宣言したいと思います
Callback<B<String, ?>,C<String, ?>> result = instance.method()
ただし、各ワイルドカードは個別であるため、コンパイラはこれが正しくないことを訴え、ワイルドカードから変換できないことを示します。
Callback<B<String,capture#3-of ?>,C<String,capture#3-of ?>>
この状況を正しく宣言する方法はありますか?
参考までに、クラス A、B、および C は外部ライブラリからのものです。インスタンスを次のように宣言しようとしました
A<String, Object>
しかし、それは私が制御できない 4 番目のクラスのメソッドの結果でもあります。
class D<T>{
public A<T, ?> getObject();
}
D<String> start = new D<String>();
A<String, ?> = start.getObject();
...