scala - 从 Scala 调用 Java : protected constructor

标签 scala constructor protected java-interop

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

相关文章:

scala - 在 Scala 中使用 ClassManifest 从 Any 中转换值

c++ - 将构造函数转换为函数的返回值

objective-c - 在 Objective-C 中完成 protected 属性的解决方法

java - 为什么 Java 中的 Object 类包含 protected 方法?

Scala - 动态对象/类加载

Scala:是否可以将类型参数限制为非抽象?

java - 继承和静态工厂方法

c++ - 从 C++ 中的测试代码访问 protected 成员函数

scala - 可以为 CI 构建关闭 sbt 中的增量编译器吗?

java - 没有 this() 的构造函数链接