Warum erfolgt in bedingten Java-Ausdrücken das Downcasting des Rückgabetyps nur für final int und nicht für final short?
Posted: 13 Jan 2025, 16:20
Beim Online-Kurs wurde erwähnt, dass, wenn wir einen bedingten Ausdruck in Java haben, der auf der einen Seite Byte oder Short und auf der anderen Seite Final Int zurückgibt, dann if Der int-Wert passt in den Short oder das Byte und wird heruntergestuft, um diesem Typ zu entsprechen. Dies funktioniert jedoch nur für das finale int und nicht für das finale short.
Ich frage mich, was die Logik dahinter ist und warum der Compiler ein Downcasting zulässt während man das andere verhindert? Es scheint logisch und korrekt zu sein, warum also diese Einschränkung?
Der folgende Code funktioniert und lässt sich gut kompilieren
Aber wenn ich es in short ändere, erhalte ich den Kompilierungsfehler
Ich frage mich, was die Logik dahinter ist und warum der Compiler ein Downcasting zulässt während man das andere verhindert? Es scheint logisch und korrekt zu sein, warum also diese Einschränkung?
Der folgende Code funktioniert und lässt sich gut kompilieren
Code: Select all
public class Testing {
public static void main(String[] args) {
final int x = 99;
byte y = 33;
byte r = true ? x : y;
System.out.println(r);
}
}
Code: Select all
public class Testing {
public static void main(String[] args) {
final short x = 99;
byte y = 33;
byte r = true ? x : y;
// java: incompatible types: possible lossy conversion from short to byte
System.out.println(r);
}
}