Kotlin 如何从父 class 强制执行子 class
Kotlin how to enforce child class from parent class
这感觉非常微不足道,但我的 google 和堆栈溢出结果充满了完全不相关的东西。
在java中,如果方法调用returns一个父class对象,即
ParentClass instance = someCall();
您可以将其强制为子 class 并通过
调用子 class 特定方法
(ChildClass) instance.doChildClassThings()
在 kotlin 中是如何工作的?
您可以使用 as
关键字实现与
相同的功能
(ChildClass) instance.doChildClassThings()
instance.doChildClassThings() as ChildClass
或者如果 instance
是您正在寻找的 ChildClass
(instance as ChildClass).doChildClassThings()
除了 Matt 的回答之外,请注意,对于 Java 中的一种常见用法(甚至可能是最常见的),您 不需要 as
在科特林中;也就是说,如果你在检查 instance
实际上属于 ChildClass
之后投射,在 Java 你写
if (instance instanceof ChildClass) {
((ChildClass) instance).doChildClassThings();
}
在Kotlin中,感谢smart-casting,写
就足够了
if (instance is ChildClass) {
instance.doChildClassThings()
}
编译器插入转换。
这感觉非常微不足道,但我的 google 和堆栈溢出结果充满了完全不相关的东西。
在java中,如果方法调用returns一个父class对象,即
ParentClass instance = someCall();
您可以将其强制为子 class 并通过
调用子 class 特定方法(ChildClass) instance.doChildClassThings()
在 kotlin 中是如何工作的?
您可以使用 as
关键字实现与
(ChildClass) instance.doChildClassThings()
instance.doChildClassThings() as ChildClass
或者如果 instance
是您正在寻找的 ChildClass
(instance as ChildClass).doChildClassThings()
除了 Matt 的回答之外,请注意,对于 Java 中的一种常见用法(甚至可能是最常见的),您 不需要 as
在科特林中;也就是说,如果你在检查 instance
实际上属于 ChildClass
之后投射,在 Java 你写
if (instance instanceof ChildClass) {
((ChildClass) instance).doChildClassThings();
}
在Kotlin中,感谢smart-casting,写
就足够了if (instance is ChildClass) {
instance.doChildClassThings()
}
编译器插入转换。