2016-09-28 127 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我使用定義的類型,例如,字符串一切工作只是桃色,但與通用的符號無法解決。

我會如何實現這一目標?

回答

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)。