我不明白为什么在将Collections.emptyMap()分配给地图引用时将Collections.emptyMap()作为参数传递时出现错误,但没有提供错误,下面是我尝试的代码示例,我使用的是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) {

    }
}

最佳答案

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

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

07-26 03:10