Java Generic Map<T, T> in a Generic 类<T> put 抛出"不兼容的类型:T 无法转换为 T"错误



我有以下类:

public class MyClass<T> {
private Map<T, T> _map;
public MyClass(List<T> data) {
_map = new HashMap<T, T>();
Prepare(data);
}
public <T> void Prepare(List<T> data) {
for (T i : data) {
if (!_map.containsKey(i))
_map.put(i, i);
}
}
}

它在代码的put行抛出编译时错误incompatible types: T cannot be converted to T。我想念什么?

您的Prepare方法似乎隐藏了为类定义的泛型参数。试试这个:

public class MyClass<T> {
private final Map<T, T> _map;
public MyClass(final List<T> data) {
_map = new HashMap<T, T>();
Prepare(data);
}
public void Prepare(final List<T> data) {
for (final T i : data) {
if (!_map.containsKey(i)) {
_map.put(i, i);
}
}
}
}

最新更新