#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.
(ссылка)