• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何泛型?不是对象

java 来源:Code.IT 3次浏览

我的意图是将对象投射到(?)但是如何做到这一点? 我的代码:如何泛型?不是对象

Map<T,?> rawResult = initMap; 
final T key = ... 
final Object kryoResult = kryo.readClassAndObject(input); 
rawResult.put(key,value); 

这使我以下错误

错误的第二个参数的类型。发现:’java.lang.Object’,必需:’?’

演员不起作用:

(?)value 

而且这样的:

final ? value = ... 

是不是?一个东西?因为?是“什么……我不在乎?”?


===========解决方案如下:

因为?是“什么……我不在乎?”

这是不对的:?我不知道而不是我不在乎。这就是为什么你不能在地图上添加东西的原因。因为地图也可以容纳String对象。因此添加一个Object会导致错误。

Map<T, String> stringMap = new HashMap<>(); 
stringMap.put(key, "Value"); 
Map<T, ?> map = stringMap; // works 
Object value = map.get(key); // Object, because "map" doesn't know the types its holding 
map.put(key, "New Value"); // doesn't work, even though the map is holding stringValues 

也看看this question其中详细介绍了通配符?


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)