Colletions
从课堂上研究这种方法:
@SuppressWarnings("unchecked")
public static final <T> Set<T> emptySet() {
return (Set<T>) EMPTY_SET;
}
Collections.emptySet() return `Set<Object>`
这种行为不同于泛型类。<T>
如果我在没有使用原始对象的情况下实例化泛型类。
在方法接受泛型集因编译错误而失败后,我注意到了这一点:
public class GenericMethodRaw {
public static void main(String [] args){
Set set = Collections.emptySet();
method(set); //fine
method(Collections.emptySet()); //compilation error here
Set<String> set1 = Collections.emptySet();//fine compilation
}
public static void method(Set<String> strings){}
}
编译器消息:
java: method method in class GenericMethodRaw cannot be applied to given types;
required: java.util.Set<java.lang.String>
found: java.util.Set<java.lang.Object>
reason: actual argument java.util.Set<java.lang.Object> cannot be converted to java.util.Set<java.lang.String> by method invocation conversion