Perdón por el título pegadizo. ;-)No puedo hacer ningún paquete de clase privada en Scala?
Quiero crear una clase de paquete-privada con un método paquete-privada en Scala, por lo que mi clase se ve algo como esto:
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
}
Sin embargo, si uso javap para comprobar cuál es el Scala compilador crea efectivamente, me sale algo como esto:
$ 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);
...
}
esto significa que aunque el compilador Scala podría respetar las restricciones de acceso, todavía podía llamar a esta clase de cualquier código Java, que es una violación clara de encapsulación.
¿Echo de menos algo? ¿Hay alguna manera de hacer que esto funcione según lo previsto?
+1 por el título divertido –