6 ответов:
вы не можете. Базовая числовая константа считается целым числом (или длинным, если за ним следует "L"), поэтому вы должны явно понизить его до байта, чтобы передать его в качестве параметра. Насколько я знаю, нет никакого ярлыка.
вы должны бросить, я боюсь:
f((byte)0);Я считаю, что будет выполнять соответствующее преобразование в compile-вместо исполнение время, так что на самом деле это не приведет к штрафам за производительность. Это просто неудобно :(
вы можете использовать байтовый литерал в Java... что-то вроде того.
byte f = 0; f = 0xa;
0xa(int literal) получает автоматическое приведение к байту. Это не настоящий байтовый литерал (см. JLS & комментарии ниже), но если он крякает, как утка, я называю его уткой.то, что вы не можете сделать, это:
void foo(byte a) { ... } foo( 0xa ); // will not compileвы должны бросить следующим образом:
foo( (byte) 0xa );но имейте в виду, что все они будут компилироваться, и они используют " байт литералы":
void foo(byte a) { ... } byte f = 0; foo( f = 0xa ); //compiles foo( f = 'a' ); //compiles foo( f = 1 ); //compilesконечно, это тоже составляет
foo( (byte) 1 ); //compiles
Если вы передаете литералы в коде, что мешает вам просто объявить его раньше времени?
byte b = 0; //Set to desired value. f(b);
С Java 7 и более поздней версии, вы можете указать байтовый литерал таким образом:
byte aByte = (byte)0b00100001;Ссылка: http://docs.oracle.com/javase/8/docs/technotes/guides/language/binary-literals.html
Comments