Tag: 内部类

密封的内部类

我想创建一个封闭的类的宇宙,其中每个子类是一些外部类的内部类。 我以为我可以使用密封的内部类作为层次结构的基础,如下所示: class Outer { fun foo(): Int { // … } inner sealed class InnerBase(val i: Int) { fun sharedFunctionality() { println(foo() + i) } abstract fun doIt() inner class Inner1: InnerBase(1) { override fun doIt() { blah() sharedFunctionality() bloo() } } } } 注意 Outer是一个适当的类,它可以有许多不同的实例。 每个实例应该能够创建将调用正确的foo Inner1 InnerBase子类的Universe是有限的 InnerBase有一些实例方法,被各种Inner子类使用,访问Outer的非静态方法foo InnerBase的具体子类(例如Inner1 )将参数传递给InnerBase的构造函数 但是,这个问题是我不知道如何在Outer构造一个Inner1类型的值。 我希望这会工作: […]

为什么我不能引用val或指向对象的typealias的嵌套对象?

考虑下面的代码: object SomeObjectA { object SomeObjectB { val a = "test" } } val X = SomeObjectA typealias Y = SomeObjectA SomeObjectA.SomeObjectB // works X.SomeObjectB // error Y.SomeObjectB // error 我不能使用引用外部对象的val或typealias引用嵌套对象(在外部对象中)。 为什么?