Antworten:
Du kannst nicht. Eine grundlegende numerische Konstante wird als Ganzzahl betrachtet (oder als lang, wenn ein "L" folgt). Sie müssen sie daher explizit auf ein Byte herabsetzen, um sie als Parameter zu übergeben. Soweit ich weiß, gibt es keine Abkürzung.
byte b(int i) { return (byte) i; }
irgendwo eine einfache Hilfsmethode definieren und statisch importieren. Dann können Sie f (b (10)) schreiben.
Sie müssen besetzen, ich fürchte:
f((byte)0);
Ich glaube, dass die entsprechende Konvertierung zur Kompilierungszeit anstelle der Ausführungszeit durchgeführt wird, sodass dies keine Leistungseinbußen zur Folge hat. Es ist nur unpraktisch :(
Sie können ein Byte-Literal in Java verwenden ... irgendwie.
byte f = 0;
f = 0xa;
0xa
(int literal) wird automatisch in Byte umgewandelt. Es ist kein echtes Byte-Literal (siehe JLS & Kommentare unten), aber wenn es wie eine Ente quakt, nenne ich es eine Ente.
Was Sie nicht tun können, ist Folgendes:
void foo(byte a) {
...
}
foo( 0xa ); // will not compile
Sie müssen wie folgt besetzen:
foo( (byte) 0xa );
Beachten Sie jedoch, dass diese alle kompiliert werden und "Byte-Literale" verwenden:
void foo(byte a) {
...
}
byte f = 0;
foo( f = 0xa ); //compiles
foo( f = 'a' ); //compiles
foo( f = 1 ); //compiles
Natürlich kompiliert dies auch
foo( (byte) 1 ); //compiles
1
ist ein int-Literal, double d = 1;
kompiliert aber gut.
byte b(int i){}
, dann b(1)
so lange und weniger knifflig als f=1
.
Wenn Sie Literale im Code übergeben, was hindert Sie daran, sie einfach im Voraus zu deklarieren?
byte b = 0; //Set to desired value.
f(b);
public static final byte BYTE_MASK = ( byte )0xff;
byte BYTE_MASK = 0x000000ff;
dass ich keine bösen Fehler bei der Zeichenerweiterung bekomme.
Was ist mit dem Überschreiben der Methode mit
void f(int value)
{
f((byte)value);
}
dies wird ermöglichen f(0)
Mit Java 7 und einer höheren Version können Sie ein Byte-Literal folgendermaßen angeben:
byte aByte = (byte)0b00100001;
Referenz: http://docs.oracle.com/javase/8/docs/technotes/guides/language/binary-literals.html