Intellij Idea:违反合同条款 'null -> fail'

Intellij Idea: Contract clause 'null -> fail' is violated

我在 Intellij IDEA 14 中收到此警告,但我不太明白它的含义。

public class SubArray {

private final int[] array;
private final int left;
private final int right;
private final int sum;

public SubArray(int[] array, int left, int right) {
    this.array = array;
    this.left = left;
    this.right = right;
    int s = 0;
    for (int i = left; i <= right; i++) {
        s += array[i];
    }
    sum = s;
}

public int[] getArray() {
    return array;
}

public int getLeft() {
    return left;
}

public int getRight() {
    return right;
}

public int getSum() {
    return sum;
}

}

public static SubArray returnMax(SubArray ... subArrays) {
    if (subArrays == null || subArrays.length == 0) {
        throw new RuntimeException("No sub arrays provided");
    }
    SubArray max = subArrays[0];
    for (int i = 1; i < subArrays.length; i++) {
        if (subArrays[i].getSum() > max.getSum()) {
            max = subArrays[i];
        }
    }
    return max;
}

return max;行发出警告。 我检查 subArrays 是 null 还是空的。我想这应该够了。

数组可以设置 null 个元素,您只检查 subArrays 是否为 null。您还应该检查 subArrays[0]subArrays[i] 是否。

这只是一个错误 (https://youtrack.jetbrains.com/issue/IDEA-136079), which will be fixed in version 14.1. Sorry for that. You can use the EAP version (https://confluence.jetbrains.com/display/IDEADEV/IDEA+14.1+EAP),或者只是在出现警告时通过 Alt+Enter 暂时禁用此检查。