这在 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)
这是错误、功能还是已知限制?
最佳答案
这是一个 bug,一个功能。您当然应该得到访问错误(功能),因为这就是 protected 应该做的。可以说,编译器应该对上下文有足够的了解,以便能够告诉您并警告您,而不是将其留给运行时(错误,或至少是增强候选)。
关于scala - 从 Scala 调用 Java : protected constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3678698/