下一个代码

public class FilterState<T>{
   Map<String, Object> getProperties(){return null;} // null for shorteness
}

....
public test(FilterState filterState){
    Map<String, Object> map = filterState.getProperties();
}


产生警告

Unchecked assignment: 'java.util.Map' to 'java.util.Map<java.lang.String, java.lang.Object>


但是,如果我将过程定义替换为

public <T> test(IFilterState<T> filterState)


警告消失。我不知道泛型与映射分配有什么关系。快速搜索通用文档没有帮助。知道在哪里看吗? :)

最佳答案

如果放弃泛型类型参数,则整个类将被视为使用原始类型,并且该类中的所有泛型类型信息都将被忽略。这就是这里发生的事情。

09-26 00:19