2

这在 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)

这是错误、功能还是已知限制?

4

1 回答 1

4

这是一种错误,一种功能。您当然应该得到访问错误(功能),因为这是 protected 应该做的。编译器可以说应该对上下文有足够的了解,以便能够告诉你,并警告你而不是将其留给运行时(错误,或者至少是候选增强)。

于 2010-09-09T17:27:21.117 回答