将Collections.emptyMap作为参数传递时遇到错误

时间:2018-04-14 03:11:57

标签: java generics collections

我不明白为什么我在传递Collections.emptyMap()作为参数时遇到错误,而将Collections.emptyMap()分配给地图引用时却没有提供错误,下面是我试过的代码示例,I我正在使用JDK1.7

public class Solution {
    public static void main(String[] args) {
        Solution sol = new Solution();
        Map<String, String> map = Collections.emptyMap(); //There is no compile time error on this.
        sol.calculateValue(Collections.emptyMap()); //Getting compile time error on this
    }

    //what is the difference in passing Collections.emptyMap() as a parameter
    public void calculateValue(Map<String, String> pMap) {

    }
}

1 个答案:

答案 0 :(得分:2)

因为您正在使用JDK 1.7,所以您无法从JDK 8及更高版本中的改进类型推断中受益。最好更新您正在编译的Java版本。如果这不是一个选项,那么在传递Map作为参数时,必须将Collections#emptyMap的参数显式传递给函数:

calculateValue(Collections.<String, String>emptyMap());