2017-03-04 75 views
0

我想知道你是否能幫助我更好地掌握仿製藥。 我儘可能簡化了這個問題。Java泛型 - 我錯過了什麼?

我想將存儲在鏈接列表中的元素保存在名爲saveIt的變量中。我知道LinkedList本身使用泛型,所以我希望我的變量能夠處理列表中的任何數據類型。我相信LinkedList本身將該類型指定爲E,但是當我嘗試將變量聲明爲「E saveIt」時,我得到「無法解析符號E.」

public class Main { 
    public static void main(String[] args) { 
     // whatever goes here ... 
    } 

    void saveElement(LinkedList input) { 
     E saveIt = input.getFirst(); 
    } 
} 

如果我建立LinkedList,那麼我可以聲明一個變量爲'Integer saveIt',但這不是我想要做的。

public class Main { 
    public static void main(String[] args) { 
     // whatever goes here ... 
    } 

    void saveElement(LinkedList<Integer> input) { 
     Integer saveIt = input.getFirst(); 
    } 
} 

我考慮聲明'Object saveIt',但我不確定這是否是正確的方法。數據類型E的概念顯然存在於Java中,並且與Object(或者它?)不完全相同,爲什麼我不能訪問它(或者我怎樣才能訪問它)?

public class Main { 

    public static void main(String[] args) { 
     // whatever goes here ... 
    } 

    void saveElement(LinkedList input) { 
     Object saveIt = input.getFirst(); 
    } 
} 

所以,基本的問題是,如果我想我的方法地址列表中的任何數據類型,我該怎麼做?

回答

1
<E> void saveElement(LinkedList<E> input) { 
    E saveIt = input.getFirst(); 
} 

你需要告訴Java中E是你的方法的類型參數 - 就像是在傳遞另一件事! - 並且LinkedList包含E類型的元素。

+0

認真?!哇。這很簡單(我在搜索之前搜索了很長時間 - 也許它應該是顯而易見的)。謝謝。 – RCM

+0

這相當於只是'void saveElement(LinkedList input)' – newacct

+0

取決於該值的其他做法,以及代碼的其餘部分是否需要提及E.我認爲這不是OP的完整代碼。 –