On Thu, 8 Apr 2021 08:54:35 GMT, Sebastian Stenzel 
<github.com+1204330+overheadhun...@openjdk.org> wrote:

>> When we do
>> byte b1 = (byte) (value & 0xFF);
>> we keep from int only 1 lower byte and exactly the same can be achieved with 
>> plain cast. See the test below:
>> public class Main {
>>   public static void main(String[] args) throws Exception {
>>     IntStream.range(Integer.MIN_VALUE, Integer.MAX_VALUE).forEach(value -> {
>>       byte b1 = (byte) (value & 0xFF);
>>       byte b2 = (byte) value;
>>       if (b1 != b2) {
>>         throw new RuntimeException("" + value);
>>       }
>>     });
>> }
>> 
>> Also tier1 and tier2 are both OK.
>
> I don't think these masks have been added because they are _required_ but 
> rather because they explicitly show the intention: You can immediately see 
> that losing the MSBs of an int during the cast is _not_ just an error.

I agree with Sebastian. I believe the original code was clearer.

-------------

PR: https://git.openjdk.java.net/jdk/pull/2826

Reply via email to