2017-07-07 106 views
0

的一個錯誤如下因素miminal例如resuts在Android工作室「Collection不能轉換爲LinkedList」:轉換錯誤

class Factory<F extends Factory<F>> { 

    public <T extends Collection<?>> T empty(Class<T> clazz) { 
     try { 
      return clazz.newInstance(); 
     } catch (Exception e) { 
      throw new Error(e); 
     } 
    } 

} 

class MyFactory extends Factory { 

    // ERROR is displayed here 
    LinkedList<?> list = empty(LinkedList.class); 

} 

我試圖刪除這個錯誤,但無法弄清楚什麼是問題。構造T create(Class<T> clazz)應該是有效的,併爲我多次工作。所以轉換不應該是問題,並且錯誤根本沒有幫助。

回答

0

花了我好幾個小時來創建一個最小的exmaple(我的原始項目更復雜,涉及Android特定的代碼)。當我將最小的例子複製到eclipse中時,我發現我忘記了在MyFactoryextend Factory<MyFactory>之間添加模板參數。 Eclipse給了我一個警告來擴展原始類型。原始類型不提供成員函數empty()的一般參數,並返回Collection而不是T extends Collection

Android Studio實際上可以在原始類型上創建警告,但默認情況下它是禁用的。有關如何啓用它,請參閱this thread

我希望這可以幫助遇到同樣問題的人。