tipos primitivos literales ejemplos definicion declaracion datos java byte literals

primitivos - ¿Cómo se especifica un byte literal en Java?



tipos de datos primitivos definicion (6)

¿Qué hay de anular el método con

void f(int value) { f((byte)value); }

esto permitirá f(0)

Si tengo un metodo

void f(byte b);

¿Cómo puedo llamarlo con un argumento numérico sin lanzar?

f(0);

da un error



No se puede. Una constante numérica básica se considera un número entero (o largo si va seguido de una "L"), por lo que debe convertirlo explícitamente en un byte para pasarlo como parámetro. Por lo que sé, no hay atajo.


Puedes usar un byte literal en Java ... más o menos.

byte f = 0; f = 0xa;

0xa (int literal) se convierte automáticamente a byte. No es un literal de byte real (ver JLS y comentarios a continuación), pero si se comporta como un pato, lo llamo pato.

Lo que no puedes hacer es esto:

void foo(byte a) { ... } foo( 0xa ); // will not compile

Tienes que lanzar de la siguiente manera:

foo( (byte) 0xa );

Pero tenga en cuenta que todos estos se compilarán, y están usando "literales de bytes":

void foo(byte a) { ... } byte f = 0; foo( f = 0xa ); //compiles foo( f = ''a'' ); //compiles foo( f = 1 ); //compiles

Por supuesto esto también compila

foo( (byte) 1 ); //compiles


Si está pasando literales en código, ¿qué le impide simplemente declararlo antes de tiempo?

byte b = 0; //Set to desired value. f(b);


Tienes que lanzar, me temo:

f((byte)0);

Creo que se realizará la conversión apropiada en tiempo de compilación en lugar de tiempo de ejecución , por lo que en realidad no causará penalizaciones de rendimiento. Es solo un inconveniente :(