这个条件总是正确吗?

时间:2018-09-03 13:39:40

标签: java intellij-idea

我收到一条消息,说我的病情始终是对的,直到现在我还没有改变,我什么也没做。

这是真的吗?

    int size = in.readableBytes();

    if (size > 2){
        byte sizeBytes = in.readByte();
        int length = sizeBytes == 1 ? in.readUnsignedByte() : sizeBytes == 2 ? in.readUnsignedShort() : sizeBytes == 3 ? ((in.readUnsignedByte() & 0xFF) << 16) | ((in.readUnsignedByte() & 0xFF) << 8) | (in.readUnsignedByte() & 0xFF) : 0;
        if (length != 0){
            byte packetID = in.readByte();
            if (size == length){

                if (size >= 2){ // Condition is always true warning
                    System.out.println("Size >= 2");
                    out.add(new Packet(in, packetID));
                }

            }
        }
    }

我认为这与size > 2不同,它也可以是真实的size == 2(也有相同的警告)。这是错误还是该条件实际上“总是正确”?

2 个答案:

答案 0 :(得分:6)

if (size >= 2)仅在外部条件if (size > 2)评估为true时评估。

这意味着仅当大小大于2 时才进行评估。但是,如果大小大于2,则可以保证它也大于或等于2 ,因此内部条件将始终为true,因此毫无意义。

答案 1 :(得分:2)

size>2始终是size>=2的子集。 IDE根据外部的条件评估内部的if子句。因此,发出警告是正常的。

相关问题