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.