Si consideri il seguente frammento di codice:Il cast implicito del tipo non funziona per i parametri del metodo?
class TypeCast{
public static void main(String[] args){
byte by = 4; //compiler casts int literal to byte
doCasting(4); //Compilation Error: external type casting is required. WHY ?
}
public static void doCasting(byte by){
}
}
Penso codice di cui sopra frammento è abbastanza auto-esplicativo. Mentre l'assegnazione letterale int
al tipo byte
, il compilatore esegue automaticamente la trasmissione richiesta. La stessa cosa non accade quando chiamiamo un metodo che utilizza il parametro byte
con letterale int. Perché?
Non è possibile. Una costante numerica di base è considerata un numero intero, quindi è necessario ridistribuirla esplicitamente a un byte per passarla come parametro. Per quanto ne so, non esiste una scorciatoia. [Fonte] (http://stackoverflow.com/questions/5193883/how-do-you-specify-a-byte-literal-in-java) – Milkmaid