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
Con Java 7 y la versión posterior, puede especificar un literal de bytes de esta manera: byte aByte = (byte)0b00100001;
Referencia: http://docs.oracle.com/javase/8/docs/technotes/guides/language/binary-literals.html
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 :(