Ola alguém sabe me dizer se entendi direito a seguinte questao;
caso nao esteja usando un enum vc pode usar no swicth variáveis e valores que podem ser promovidos automaticamente(implicitamente convertidos)a um tipo int serão aceitos.
Esta certo? e se sim pq posso converter entao abaixo?
classText{publicstaticvoidmain(Stringargs[]){intInt=10;finalbyteb=21;switch(Int){caseb://a conversao implicita nao deveria falhar?}ByteBy=34;finalshortsh=98;switch(By){casesh://sem problemas sh recebe um wrapper menor}}
Não entendi muito bem a sua dúvida, mas um byte pode ser promovido a um int.
T+
F
fabioEM
diego2005:
Não entendi muito bem a sua dúvida, mas um byte pode ser promovido a um int.
T+
desculpas me expliquei mal no exemplo que dei nao entendi pq um int é promovido para um byte!
F
fabioEM
ok para me explicar melhor ainda queria saber se a conversao que o compilador faz é da expressao swicth para case ou o inverso??
valeu brigado pela atencao diego
diego2005
fabioEM:
diego2005:
Não entendi muito bem a sua dúvida, mas um byte pode ser promovido a um int.
T+
desculpas me expliquei mal no exemplo que dei nao entendi pq um int é promovido para um byte!
É o contrário, um byte que é promovido à um int.
T+
F
fabioEM
diego2005:
fabioEM:
diego2005:
Não entendi muito bem a sua dúvida, mas um byte pode ser promovido a um int.
T+
desculpas me expliquei mal no exemplo que dei nao entendi pq um int é promovido para um byte!
É o contrário, um byte que é promovido à um int.
T+
valeu cara mas eu ainda to confuso veja o que acontece agora se como tu falaste é um byte que é promovido isso deveria dar certo nao??
O problema desse código é que você declarou como Short e não short. Short é um objeto e short um tipo primitivo. Faz o teste ai pra vc ver…
T+
F
fabioEM
diego2005:
O problema desse código é que você declarou como Short e não short. Short é um objeto e short um tipo primitivo. Faz o teste ai pra vc ver..
T+
beleza cara ,tudo bem mas como é que ele pode aceitar o contrario entao?veja embaixo eu coloquei um objeto Short na expressao switch
mas uma classe wrapper Short nao deveria receber um int.Ou estou errado?
final int y=9;
final Short sh=9;
int Int=Short.valueOf("11");
switch(sh){//um Short pode receber um int ??
case y:
}
Obrigado ai!!
diego2005
O compilador aceita pq você está usando um valor constante, que não vai mudar, então ele sabe que 9 mesmo sendo do tipo int pode ser atribuído a um valor short. Dá uma olhada nos exemplos a seguir:
O compilador aceita pq você está usando um valor constante, que não vai mudar, então ele sabe que 9 mesmo sendo do tipo int pode ser atribuído a um valor short. Dá uma olhada nos exemplos a seguir: