Was sind die Garantien für Scala Access Qualifiers?

8

Ich habe eine Klasse mit diesem Code:

%Vor%

Dann benutze ich in einem anderen Paket diese Klasse:

%Vor%

Betrachtet man den generierten Bytecode, gibt es keinen Hinweis auf einen Zugriffsmodifikator, was sinnvoll ist, da Java solche Zugriffsbeschränkungen nicht unterstützt. Was passiert also, wenn ich eine Bibliothek erzeuge, die Code wie Block 1 enthält, und versuche, Block zwei gegen die Bibliothek zu kompilieren - es besteht keine Chance, dass der Compiler fehlschlägt, da die Information verloren geht. Oder ist es in etwas wie ein Manifest enthalten?

Ich benutze Scala 2.9.2.

    
John Smith 04.12.2012, 21:46
quelle

1 Antwort

10

Sie könnten EmailService von Java referenzieren, aber nicht von Scala, weil Scala die Signatur der Klasse als scala.reflect.ScalaSignature Annotation speichert. Der Scala-Compiler wird mit dem folgenden Fehler fehlschlagen:

  Auf die Klasse

EmailService in Paket-E-Mail kann im Paket shop.orders.services.email

nicht zugegriffen werden
    
yakshaver 04.12.2012, 22:19
quelle

Tags und Links