这种情况总是如此吗?

par*_*y34 -2 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));
                }

            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我认为这不是一回事size > 2,它也可以是真正的大小== 2(也有相同的警告).这是一个错误还是这个条件实际上"永远都是真的"?

Era*_*ran 6

if (size >= 2)只有在评估外部条件时才会if (size > 2)评估true.

这意味着只有在尺寸大于2时才会评估它.但是如果大小大于2,则保证也大于或等于2,因此内部条件总是如此true,因此是没有意义的.