我想将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中,这种构造工作正常。
答案 0 :(得分:10)
如果Inner
类是static
,它确实有效。
如果不是,那么你运气不好(但你真的需要吗?)。但您可以将此名称与#
分隔符一起使用,如下所示:
var inner = outer.getInner : Outer#Inner
答案 1 :(得分:4)
Inner2 i2
在Scala中都是非法的,val i2 = o.getInner().addInner2("some text")
可以正常使用。
答案 2 :(得分:1)