我有一个Java类,我正在Scala中工作。我可以实例化这个类,但我看不到如何在Scala的外部类中实例化一个public static
类。任何人都可以指出我的答案?来自Scala,访问Java类的静态内部类
(我读过许多职位,说如何在Scala代码使用“静态”的成员那不是我要找的。)
我有一个Java类,我正在Scala中工作。我可以实例化这个类,但我看不到如何在Scala的外部类中实例化一个public static
类。任何人都可以指出我的答案?来自Scala,访问Java类的静态内部类
(我读过许多职位,说如何在Scala代码使用“静态”的成员那不是我要找的。)
在我的情况是这样的作品:
Java类
package test.java;
public class Test {
public static class TestInner {}
}
斯卡拉类
package test.scala
import test.java.Test
object Main {
def main(args: Array[String]): Unit = {
new Test.TestInner()
}
}
这与您在Java中引用静态嵌套类的方式相同。然而,命名静态嵌套类“TestInner”是一个错误,因为它错误地暗示维护者该类是内部类。 –
在语言/ JVM级别上,可能不会有像“内部静态类”这样的东西,但从概念上来说,“static”会创建排序的名称空间 - 因此'TestInner'是由'Test'创建的名称空间的内部(尽管它可以被访问从外面)。我想这就是作者的意思和想要访问。 –
使用Java时,最好使用适用于Java的术语。 “在语言层面上”在你谈论的语言中很重要。 –
根据定义,Java中没有“静态内部类”这样的事情:“静态关键字可以修改非内部类或接口T内的成员类型C的声明。其影响是声明C不是一个内部类“和”一个内部类是一个嵌套类,它没有明确或隐式地声明为静态。“来自JLS。 –