下一个代码
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)
警告消失。我不知道泛型与映射分配有什么关系。快速搜索通用文档没有帮助。知道在哪里看吗? :)
最佳答案
如果放弃泛型类型参数,则整个类将被视为使用原始类型,并且该类中的所有泛型类型信息都将被忽略。这就是这里发生的事情。