2015-03-02 151 views
2

我想創建一個接口,我的一些類將實現。雖然這對於一個T型正常工作:嵌套泛型類型接口

public interface AsyncResponse<T> { 
    void processFinish(T output); 
} 

這樣使這項工作對泛型列表使用processFinish<String>

似乎沒有。或者至少,我無法理解如何能夠允許以下幾種之一而不限於:

  1. LinkedHashSet輸出。
  2. ArrayList輸出。

我嘗試以下,但沒有奏效:

public interface AsyncGenericResponse<T<X>>{ 
    void processFinish(T<X> output); 
} 

public interface AsyncGenericResponse<LinkedHashSet<T>{ 
    void processFinish(LinkedHashSet<T> output); 
} 

無論是解決方案似乎工作。我該如何解決這個問題,甚至有可能?

回答

3

通用類型僅爲T,該方法接受LinkedHashSet<T>,但在此類聲明中沒有「嵌套泛型」。

將下面的代碼編譯就好:

public interface AsyncGenericResponse<T>{ 
    void processFinish(LinkedHashSet<T> output); 
} 
+0

此外,可以考慮使用'集合'超類型,而不是一個特定的'Set'或'List'如果你只需要一個集合,但不要不想在參數級別指定確切的類型。 – Blacklight 2015-03-02 12:29:48

+0

@Matthijs但是在這種情況下,雖然它可以用於你的'List'類型,但它不再適用於類型,例如'String'? – Unheilig 2015-03-02 12:32:26

+0

但是在這種情況下沒有選擇使LinkedHashSet成爲它使用變量的泛型類型?在我的界面中使用>? – Matthijs 2015-03-02 12:32:39