Je ne suis pas sûr, pourquoi int pour byte cast automatique est possible ... Fondamentalement (selon les règles java sur les primitives de casting automatique) il ne devrait pas.
Règle principale dans le cast automatique avec primitives: "nous ne perdrons pas d'information". Donc, il est possible d'élargir seulement les types. Alors int sera casté à long (pas de perte d'information) tandis que long ne peut pas être casté automatiquement en int (long peut contenir des nombres plus grands que la valeur entière maximale). Cette règle doit être exactement passé à octet ... mais vous trouvez que int octet cast automatique est possible ...
Si vous définissez 'a' sur une plage de dépassement d'octets, par exemple 1000, cela nécessiterait également une conversion. Si vous supprimez 'final', il faudra également lancer. –