我们需要在HashMap构造函数中检查这个条件Float.isNaN(加载因子)是什么?

时间:2014-11-08 17:34:15

标签: java collections constructor hashmap

public HashMap(int initialCapacity, float loadFactor) {
    if (initialCapacity < 0)
        throw new IllegalArgumentException("Illegal initial capacity: " +
                                           initialCapacity);
    if (initialCapacity > MAXIMUM_CAPACITY)
        initialCapacity = MAXIMUM_CAPACITY;
    if (loadFactor <= 0 || **Float.isNaN(loadFactor)**)
        throw new IllegalArgumentException("Illegal load factor: " +
                                           loadFactor);

    this.loadFactor = loadFactor;
    threshold = initialCapacity;
    init();
}

如果loadFactor不是数字,那么在创建新的HashMap(int initialCapacity,float loadFactor)时,我们不会立即得到编译错误吗?

P.S。抱歉我的英文)

1 个答案:

答案 0 :(得分:0)

编译时的错误检查不是免费的;有人必须实施它。碰巧这个特定的检查没有在编译器中实现,因为它不值得。

另请注意,虽然在某些情况下可以(在理论上)在编译时检测到此错误,但在许多情况下,将无法检测到此错误。例如,如果用户在运行时给出了该数字,则编译器无法检测到该数字。