2016-09-28 6 views
0

メソッド内の内部拡張インタフェースに使用した汎用型パラメータを使用しようとしました。拡張正式型パラメータをJavaで使用することは可能ですか

public interface IA<T> { 
    void someMethod(T); 
} 

public interface IB<T> { 
    T anotherMethod(); 
} 

class AImpl<T extends IB<SomeGenericTypeIWantToUse>> implements IA<T> { 

    ISomeModule<SomeGenericTypeIWantToUse> module; 

    public void someMethod(T param) { 
     SomeGenericTypeIWantToUse myVariable = param.anotherMethod(); 
     module.digest(myVariable); 
    } 
} 

public interface ISomeModule<T> { 
    void digest(T value); 
} 

public class SomeModuleImpl<T> implements ISomeModule<T> { 
    public void digest(T value) { 
     //...do something... 
    } 
} 

SomeGenericTypeIWantToUseを使用する代わりに、私は定義されたタイプを使用します。文字列はすべてpeachyで動作しますが、ジェネリックシンボルでは解決できません。

どうすれば達成できますか?あなたはあなたがそのような一般的な宣言の内部で使用するジェネリック型を指定する必要があり

答えて

1

:あなたは、一般的なコンパイラを指定しているので

class AImpl<T extends IB<SomeGenericTypeIWantToUse>, SomeGenericTypeIWantToUse> implements IA<T> { 

    ISomeModule<SomeGenericTypeIWantToUse> module; 

    public void someMethod(T param) { 
     SomeGenericTypeIWantToUse myVariable = param.anotherMethod(); 
     module.digest(myVariable); 
    } 
} 

は、明示的にそれについて知っている必要があり、それ以外の場合は、それを解決しようと(Stringを使用する場合、Stringを解決できるのでうまく動作します)。

関連する問題