Вызов Java из Scala: защищенный конструктор
Это компилируется без ошибок на Scala 2.8.0 final:
import javax.swing.tree.TreePath
object A extends Application {
val path1 = new TreePath()
val path2 = new TreePath(path1, "foo")
}
Однако по исполнению я получаю:
java.lang.IllegalAccessError: tried to access method javax.swing.tree.TreePath.<init>()V from class A$
at A$.<init>(A.scala:5)
at A$.<clinit>(A.scala)
at A.main(A.scala)
Это ошибка, функция или известное ограничение?
1 ответ
Это своего рода ошибка, особенность. Вы, безусловно, должны получить ошибку доступа (функция), потому что именно это и должно делать защищенное. Однако компилятору, возможно, следует знать достаточно о контексте, чтобы иметь возможность рассказать об этом, и предупредить вас, вместо того, чтобы оставить его во время выполнения (ошибка или, по крайней мере, кандидат на усовершенствование).