2014-03-13 65 views
1

我想在Java中編寫一個方法,它能夠將一個自定義Key對象添加到數組中,或者如果有的話可以更改數組中已有的鍵。但是,我似乎無法讓它工作。鍵將使用的類型主要是String和Integer,但我的通用方法似乎不起作用。任何類型的Java泛型<?>

的的setValue()方法具有T作爲參數的類型,和getValue()返回T.

public void set(Key<?> key) { 
    for (int i = 0; i < settings.size(); i++) { 
     Key<?> k = settings.get(i); 
     if (k.getName().equals(key.getName())) { 
      k.setValue(key.getValue()); // Error here 
      break; 
     } 
    } 
    settings.add(key); 
} 

誤差(我使用Eclipse)是:

The method setValue(capture#4-of ?) in the type Key<capture#4-of ?> 
is not applicable for the arguments (capture#5-of ?) 
+0

什麼是「鑰匙」,另一個是「鑰匙」,這將如何工作!? –

+0

@BoristheSpider然後if語句會返回false? –

+1

什麼是初始化設置? – user2573153

回答

0

你可以不保證給java,如果你提供一個Key對象到你的set()方法,並且數組中另一個Key對象具有相同的名稱,它們將具有相同的類型參數。所以Java在編譯時無法檢查代碼的類型安全性。

所以,我認爲你應該在這裏使用Raw Types