2017-02-18 5 views
0

У меня есть класс Java, с которым я работаю в Scala. Я могу создать экземпляр класса, но я не вижу, как создать экземпляр класса public static во внешнем классе от Scala. Может ли кто-нибудь указать мне на ответ?От Scala, доступ к статическому внутреннему классу класса Java

(Я прочитал много постов, которые говорят, как использовать «статические» член в Scala коде Это не то, что я ищу.).

+0

В Java нет такой вещи, как «статический внутренний класс», по определению: «Статическое ключевое слово может изменять объявление типа элемента C внутри тела не внутреннего класса или интерфейса T. Его эффект состоит в том, чтобы объявить, что C не является внутренним классом »и« Внутренний класс - это вложенный класс, который явно или неявно не объявлен статическим ». Из JLS. –

ответ

0

В моем случае что-то вроде, что работает:

  • Java класс

    package test.java; 
    
    public class Test { 
        public static class TestInner {} 
    } 
    
  • Scala класс

    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. «На языковом уровне» важно, когда это язык, о котором вы говорите. –

Смежные вопросы