Null und Nothing
Im „Die Typhierarchie von Scala“ haben wir erwähnt, dass Null
ein Subtyp aller AnyRef
-Typen und Nothing
ein Subtyp aller Typen einschließlich Null
ist.
Null
ist als ein final trait
deklariert (kann also keinen Subtyp haben) und hat nur eine einzige Instanz, nämlich null
. Da Null
ein Subtyp aller AnyRef
-Typen ist, kann man immer null
als eine Instanz jedes dieser Typen zuweisen. Java dagegen behandelt null
als ein Schlüsselwort mit besonderer Behandlung durch den Compiler. Allerdings benimmt sich Java-null
tatsächlich so, als wäre es ein Subtyp aller Referenztypen, genau wie es bei Null
von Scala der Fall ist.
Da andererseits Null
kein Subtyp von AnyVal
ist, kann man beispielsweise einem Int
nicht null
zuweisen, was ebenfalls mit ...
Get Programmieren mit Scala now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.