Por que uma conversão implícita de restrição é permitida de int para byte, mas não de longa para int?

Considere o trecho de código abaixo:

// automatic casting works for int to byte conversion as integer literal 127
// is in the range for byte
byte b1 = 127; //OK

// automatic casting doesn't work for long to int conversion 
// even if long literal is in the range of int.
int i5 = 100L; // NOT OK - compilation error

Existe alguma explicação para esse comportamento?

Por que a conversão explícita não é necessária no caso de int para byte, mas necessária por muito tempo para int?

oComo o Java converte int em byte? pergunta é diferente. Trata-se de um problema na conversão implícita de int para byte quando o valor int está fora do intervalo.

questionAnswers(2)

yourAnswerToTheQuestion