PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java: Primitive Typen + ?-Operator + null = ???


Gast
2014-03-04, 16:19:30
Hallo!

Zu meiner Verwunderung musste ich feststellen, dass folgendes vom Java-Compiler mit einer Warnung (Unboxing of '...' may produce 'java.lang.NullPointerException') akzeptiert wird:
int x = false ? 43 : null
Was zur Hölle? Wieso greift die Typprüfung an dieser Stelle nicht? Vielleicht hat/hatte es ja irgendeinen Nutzen. Weiß jemand etwas darüber?

hell_bird
2014-03-04, 16:27:08
ich würde vermuten, dass er auf der rechten seite automatisch einen Integer daraus macht.

http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html

Schmeißt er denn eine NullPointerException wenn du den code ausführst?
edit: ja tut er... das wird der Versuch sein einen Integer mit dem Wert null wieder in einen int zurückzuverwandeln

Gast
2014-03-04, 16:43:20
Schmeißt er denn eine NullPointerException wenn du den code ausführst?
Ja, tut er.

ich würde vermuten, dass er auf der rechten seite automatisch einen Integer daraus macht.
Stimmt, das macht Sinn. Was mich an dieser Stelle irritert hat, war, dass dies nicht kompiliert:
int x = null;
Allerdings ist ja tatsächlich folgendes möglich:
Integer X = null;
int x = X;
Alles klar, den Mischmasch mit den Wrapperklassen bin ich wohl nicht gewohnt.