Free Trial

Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.


  • Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint
Share this Page URL
Help

7. Das Objektsystem in Scala > Versiegelte Klassenhierarchien

Versiegelte Klassenhierarchien

Im „Case-Klassen“ haben wir das Pattern-Matching mit unserer Shapes-Hierarchie demonstriert und dabei Case-Klassen verwendet. Dabei gab es den Default-Ausdruck case _ => .... Im Allgemeinen ist es klug, einen solchen zu haben: Andernfalls wird der Laufzeitfehler scala.MatchError ausgelöst, sobald jemand einen neuen Subtyp zu Shape definiert und dieser match-Anweisung übergibt, denn die neue Form wird mit keiner der Formen übereinstimmen, die durch die Match-Anweisung abgedeckt sind. Allerdings ist es nicht immer möglich, ein sinnvolles Verhalten für den Default-Fall zu definieren.

Wenn Sie wissen, dass eine Änderung in der Hierarchie der Case-Klassen unwahrscheinlich ist, und wenn es möglich ist, die ganze Hierarchie in einer einzigen Datei zu definieren, gibt es eine Alternative: Sie können das Schlüsselwort sealed (versiegelt) vor die Deklaration der gemeinsamen Basisklasse setzen. Wenn eine Klasse versiegelt ist, kenn der Compiler alle möglichen Klassen, die in dem match-Ausdruck erscheinen können, denn alle müssen in derselben Quelldatei definiert sein. Daher können Sie, wenn Sie alle diese Klassen durch case-Ausdrücke (egal ob explizit oder über eine gemeinsame Elternklassen) abdecken, den Default-Fall problemlos weglassen.


  

You are currently reading a PREVIEW of this book.

                                                                                        

Get instant access to over
$1 million worth of books and videos.

  

Start a Free Trial


  
  • Safari Books Online
  • Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint