Warum erfolgt in bedingten Java-Ausdrücken das Downcasting des Rückgabetyps nur für final int und nicht für final short?Java

Java-Forum
Guest
 Warum erfolgt in bedingten Java-Ausdrücken das Downcasting des Rückgabetyps nur für final int und nicht für final short?

Post by Guest »

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

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);
}
}
Aber wenn ich es in short ändere, erhalte ich den Kompilierungsfehler

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);
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post