2017-02-18 65 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的術語。 「在語言層面上」在你談論的語言中很重要。 –