我正在尝试用 Java 编写一种方法,该方法能够将自定义 Key 对象添加到数组中,或者更改数组中已有的键(如果有)。但是,我似乎无法让它发挥作用。键将使用的类型主要是 String 和 Integer,但我的通用方法似乎不起作用。
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 ?)
最佳答案
您无法向 java 保证,如果您向 set()
方法提供一个 Key
对象,并且还有另一个 Key
数组中具有相同名称的对象,它们将具有相同的类型参数。所以java无法在编译时检查代码的类型安全性。
所以,我认为,你应该使用 Raw Types在这里。
关于任何类型的 Java 泛型 <?>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22391964/