我使用Type Projection。您可以在下面的示例中找到类型别名。
object Example extends App {
type AliasForY = X#Y
class X {
class Y {
def fun = 100500
}
}
def f(y: AliasForY) = y.fun
println {
f(new AliasForY())
}
}
我想通过别名实例化我的内部类,但是我收到错误Example.X is not a legal prefix for a constructor
。
我该如何解决?
答案 0 :(得分:4)
内部类不能在其包含的类之外实例化。如果您要在Y
之外创建X
的新实例,X
必须是object
。
答案 1 :(得分:1)
要创建内部类的实例,您应该拥有其包含类的实例。所以这会奏效:
val x = new X
f(new x.Y())