2017-02-18 47 views
0

我有一个Java类,我正在Scala中工作。我可以实例化这个类,但我看不到如何在Scala的外部类中实例化一个public static类。任何人都可以指出我的答案?来自Scala,访问Java类的静态内部类

(我读过许多职位,说如何在Scala代码使用“静态”的成员那不是我要找的。)

+0

根据定义,Java中没有“静态内部类”这样的事情:“静态关键字可以修改非内部类或接口T内的成员类型C的声明。其影响是声明C不是一个内部类“和”一个内部类是一个嵌套类,它没有明确或隐式地声明为静态。“来自JLS。 –

回答

0

在我的情况是这样的作品:

  • 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() 
        } 
    } 
    
+0

这与您在Java中引用静态嵌套类的方式相同。然而,命名静态嵌套类“TestInner”是一个错误,因为它错误地暗示维护者该类是内部类。 –

+0

在语言/ JVM级别上,可能不会有像“内部静态类”这样的东西,但从概念上来说,“static”会创建排序的名称空间 - 因此'TestInner'是由'Test'创建的名称空间的内部(尽管它可以被访问从外面)。我想这就是作者的意思和想要访问。 –

+0

使用Java时,最好使用适用于Java的术语。 “在语言层面上”在你谈论的语言中很重要。 –