Kotlin的泛型
密封类
密封类用来表示受限的类继承结构:当一个值为有限集中的类型、而不能有任何其他类型时。
1 2 3 4
| sealed class Expr data class Const(val number: Double) : Expr() data class Sum(val e1: Expr, val e2: Expr) : Expr() object NotANumber : Expr()
|
密封类的好处在于 when
语句
1 2 3 4 5 6
| fun eval(expr: Expr): Double = when(expr) { is Const -> expr.number is Sum -> eval(expr.e1) + eval(expr.e2) NotANumber -> Double.NaN }
|
嵌套类和内部类
嵌套类
1 2 3 4 5 6 7 8
| class Outer { private val bar: Int = 1 class Nested { fun foo() = 2 } }
val demo = Outer.Nested().foo()
|
内部类
1 2 3 4 5 6 7 8
| lass Outer { private val bar: Int = 1 inner class Inner { fun foo() = bar } }
val demo = Outer().Inner().foo()
|