2016-02-11 21 views
7
Aşağıdaki kod göz önüne alındığında

, olan 'a' otomatik anahtarı-durumda deyimi içinde türünü int terfi (yani tip Char taşımaktadır)?Bayt, kısa, char anahtar deyiminde otomatik olarak yükseltiliyor mu?

void testSwitch(byte x) { 
    switch(x) { 
     case 'a': // 1 
     case 256: // 2 
     default: // 3 
     case 1: // 4 
    } 

}

Java SE7 bu konuda bahseder olmadığını bulamadım .. açıklama için şimdiden

teşekkür ederiz.

Selamlar, Daniel

+0

anahtarı bir 'int' ve byte, char, sürer göre genellikle int terfi sabitleri ile tableswitch veya lookupswitch temel öğeler oluşturmak ve edecek Kısa, gerektiğinde otomatik olarak genişletilebilir. –

+0

[0' türünde] (https://groups.google.com/forum/#!topic/java-lang-fans/0zGzPygyJSU) – ZhongYu

cevap

7

İşte dil belirtimi bu konuda söz budur. this section on switch statements Bkz:

bir switch açıklama göz önüne alındığında, aşağıdakilerin tümünü doğru veya derleme zamanı hatası olmalı oluşur:

  • switch deyimi ile ilişkili her durum sabit uyumlu atama olmalıifadesinin türü ifade (§5.2).

  • ... daralan bir dönüşüm char değere 'a' için geçerli olacağı anlamına gelir

. 97 sayısal değeri byte olarak gösterilebilir. Ancak 256 değeri, derleyici bir hata atacak şekilde uymuyor.

+0

Teşekkürler @ AR.3. Iyi bir açıklama. Hatırlamaya değer bir nokta :) – yegomosc

İlgili konular