普通类的方法调用

Obs*_*ver 1 java generics methods

下一个代码

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

....
public test(FilterState filterState){
    Map<String, Object> map = filterState.getProperties();
}
Run Code Online (Sandbox Code Playgroud)

产生警告

Unchecked assignment: 'java.util.Map' to 'java.util.Map<java.lang.String, java.lang.Object>
Run Code Online (Sandbox Code Playgroud)

但是,如果我用.替换过程定义

public <T> test(IFilterState<T> filterState)
Run Code Online (Sandbox Code Playgroud)

警告消失了.我不知道类通用与地图分配有什么关系.通过通用文档快速搜索没有帮助.谁知道在哪里看,有人吗?:)

Lou*_*man 5

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