Вызов Java из Scala: защищенный конструктор - PullRequest
2 голосов
/ 09 сентября 2010

Это компилируется без ошибок в 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 Ответ

4 голосов
/ 09 сентября 2010

Это своего рода ошибка, своего рода функция.Вы обязательно должны получить ошибку доступа (функция), потому что именно это и должно делать защищенное.Однако, возможно, компилятор должен знать достаточно о контексте, чтобы иметь возможность рассказать об этом, и предупредить вас, вместо того, чтобы оставить его во время выполнения (ошибка или, по крайней мере, кандидат на улучшение).

...