Narrowing de Constantes em Tempo de Compilação

De acordo com a JLS, assignment contexts allow a narrowing primitive conversion if all of the following conditions are satisfied:– The expression is a constant expression of type byte, short, char or int.
– The type of the variable is byte, short, or char.
– The value of the expression (which is known at compile time, because it is a constant expression) is representable in the type of the variable.

Isso significa que você não precisa fazer cast de uma constante byte, short, int ou char antes de atribuí-la a uma variável byte, short ou char se ela é representável nestes tipos.

byte b = 1; // certo, 1 é representável em byte
byte b2 = 129; // errado, 129 não é representável em byte, precisa fazer cast

short s = 5; // certo, 5 é representável em short
short s2 = 32768; // errado, 32768 não é representável em short, precisa fazer cast

char c = 9; // certo, 9 é representável em char
char c2 = 65536; // errado, 65536 não é representável em char, precisa fazer cast

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s