En commençant par le code suivant...
byte foo = 1;
byte fooFoo = foo + foo;
Lorsque j'essaie de compiler ce code, j'obtiens l'erreur suivante...
Erreur :(5, 27) java : types incompatibles : possible conversion avec perte de int à byte
... mais si foo
est définitive...
final byte foo = 1;
final byte fooFoo = foo + foo;
le fichier sera compilé avec succès.
Passons au code suivant...
final byte[] fooArray = new byte[1];
fooArray[0] = 1;
final byte foo = fooArray[0];
fooArray[0] = 127;
System.out.println("foo is: " + foo);
... imprimera
foo is: 1
... ce qui est bien. La valeur est copiée dans une variable finale et elle ne peut plus être modifiée. Jouer avec la valeur dans le tableau ne change pas la valeur de la variable finale. foo
(comme prévu...).
Pourquoi les éléments suivants nécessitent-ils un plâtre ?
final byte[] fooArray = new byte[1];
fooArray[0] = 1;
final byte foo = fooArray[0];
final byte fooFoo = foo + foo;
En quoi cela est-il différent du deuxième exemple de cette question ? Pourquoi le compilateur me donne-t-il l'erreur suivante ?
Erreur :(5, 27) java : types incompatibles : possible conversion avec perte de int à byte
Comment cela peut-il arriver ?