Sorry für den eingängigen Titel. ;-)kann ich keine Paket-Privat-Klasse in Scala hazeln?
Ich möchte ein Paket-private-Klasse mit einem Paket-private Methode in Scala schaffen, so dass meine Klasse sieht etwas wie folgt aus:
package net.java.truevfs.ext.pace
import ...
private[pace] abstract class AspectController(controller: FsController)
extends FsDecoratingController(controller) {
private[pace] def apply[V](operation: => V): V
... // lots of other stuff
}
Wenn ich jedoch javap verwenden, um zu überprüfen, was die Scala-Compiler erzeugt effektiv, ich so etwas wie dieses:
$ javap -classpath target/classes net.java.truevfs.ext.pace.AspectController
Compiled from "AspectController.scala"
public abstract class net.java.truevfs.ext.pace.AspectController extends net.java.truevfs.kernel.spec.FsDecoratingController implements scala.ScalaObject{
public abstract java.lang.Object apply(scala.Function0);
...
}
das bedeutet, dass, obwohl die Scala-Compiler könnte die Zugangsbeschränkungen respektieren, habe ich noch diese Klasse von jedem Java-Code aufrufen könnte, was eine klare Verletzung Einkapselung ist.
Fehle ich etwas? Gibt es eine Möglichkeit, dies wie vorgesehen zu machen?
+1 für lustigen Titel –