【发布时间】:2011-08-11 00:28:14
【问题描述】:
我正在编写一个带有以下所需方法签名的地图实现。
我需要确保值的类型正确。我认为如果两种类型不相等,此检查会导致异常,但事实并非如此。有没有办法检查这个?
public boolean containsValue(Object value) {
try {
V temp = (V) value;
} catch (Exception e) {
throw new ClassCastException("Value is not of correct type");
}
...
【问题讨论】:
-
编译器会对该泛型转换发出警告。不要忽视这些警告。
-
通过要求它是 V 型,您违反了
containsValue()方法的约定,当value.equals(v)的 Map 中存在值v时,该方法返回 true(或者如果它们都是空的),不管value的类
标签: java generics casting map error-handling