Импорт внутреннего класса Java в проект Scala

#java #scala

#java #scala

Вопрос:

Я хочу импортировать внутренний класс Java в проект Scala. Код, который не будет компилироваться, выглядит следующим образом:

 import pac.Obj
import pac.Obj.Inner.Inner2

object Sample {
    def main(args: Array[String]): Unit = {            
        var o = new Obj()
        Inner2 i2 = o.getInner().addInner2("some text")
    }
}
  

Компилятор scala не может распознать второй импорт. Почему это? В Java эта конструкция работает нормально.

Ответ №1:

Это действительно работает, если Inner класс является static .

Если это не так, что ж, вам не повезло (но вам это действительно нужно?). Но вы можете использовать имя с # разделителем следующим образом:

 var inner = outer.getInner : Outer#Inner
  

Ответ №2:

Inner2 i2 в любом случае является незаконным в Scala и val i2 = o.getInner().addInner2("some text") будет работать нормально.

Ответ №3:

По словам Юлиана Драгоша, кто мог бы знать,

Действительно, нет синтаксиса для импорта Outer#Inner.

(ссылка)