M mjkraus Mitglied 15. August 2011 #1 Hallo! Ich habe folgenden Code: Java: Number x = 3; System.out.println( x instanceof Integer ? x.intValue() : x.floatValue() ); Die Ausgabe ist allerding "3.0" und nicht "3". Das heißt, es wird statt einem Integer- ein Float-Wert ausgegeben. Wie kann das sein? Viele Grüße Max
Hallo! Ich habe folgenden Code: Java: Number x = 3; System.out.println( x instanceof Integer ? x.intValue() : x.floatValue() ); Die Ausgabe ist allerding "3.0" und nicht "3". Das heißt, es wird statt einem Integer- ein Float-Wert ausgegeben. Wie kann das sein? Viele Grüße Max
G genodeftest Erfahrenes Mitglied 15. August 2011 #2 ganz einfach: 'x' ist eine Instanz der Klasse Number, nicht der Klasse Integer. In der Praxis wird dir dieser Fall aber sowieso nicht begegnen, da eignentlich niemand die Klasse Number direkt instanziiert.
ganz einfach: 'x' ist eine Instanz der Klasse Number, nicht der Klasse Integer. In der Praxis wird dir dieser Fall aber sowieso nicht begegnen, da eignentlich niemand die Klasse Number direkt instanziiert.
S SE 15. August 2011 #3 Richtig ... denn Integer extends Number ... und in Java kann man nur von Sub-Typen auf Super-Typen casten ... aber nicht umgekehrt.
Richtig ... denn Integer extends Number ... und in Java kann man nur von Sub-Typen auf Super-Typen casten ... aber nicht umgekehrt.
M mjkraus Mitglied 16. August 2011 #4 Okay. Ist mir aufgefallen und hatte keinen Sinn gemacht. Danke für die Hilfe!