2014-03-13 66 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