を確保これに沸くasourceから来る消費者:Javaは、私は2つのオブジェクトがO1取得同じワイルドカードキャプチャタイプ
public interface MySource<T> {
Class<T> getType();
Consumer<T> getComsumer();
}
私はバックの両方を想定し、一般的な方法にそれらを餌にしたいです同じタイプ(パラメータ)を持つこと。
public interface Registry<M> {
<T extends M> void register(Class<T> type, Consumer<T> consumer);
}
どこからでも、私は未知のタイプのMySourceを取得します。
Javaは、実在する型が実際に同じであるということを推論するほどスマートではありません。
public abstract class Example<M> {
Registry<M> registry;
static MySource<? extends M> getSrc();
public <T extends M> void register(Class<T> type) {
MySource<? extends M> src = getSrc();
registry.register(src.getType(), src.getComsumer());
}
> The method register(Class<T>, Consumer<T>) in the type
> Registry<M> is not applicable for the arguments
> (Class<capture#3-of ? extends M>, Consumer<capture#4-of ? extends M>)
別のオブジェクトに結果をラップする必要がありますか?または、これを解決するためのより良い方法がありますか?
あなたは 'MYSOURCE'の代わりに、別々に渡す必要がありますように見えますパラメータは、2つの異なることはできません。 –
'registry.register(...)'への呼び出しを含む完全なメソッドまたはクラス、特にメソッド宣言またはクラス宣言(型パラメータがありますか?)を表示します。 – Jesper
@AndyTurner:私はそれが問題を解決するだろうが、私のアーキテクチャでは意味をなさないでしょう。 – IARI