假设我有两个类,a Base和a Impl扩展Base.
package mypackage
open class Base
class Impl : Base()
Run Code Online (Sandbox Code Playgroud)
我如何为具体的Impl-Type(供内部使用)创建私有属性,使用类型为Base-Type的公共getter来实现多态?我最初的方法是这样的:
class Test {
private val myType = Impl()
get():Base
}
Run Code Online (Sandbox Code Playgroud)
但是,Kotlin编译器抱怨:
错误:(30,11)Kotlin:Getter返回类型必须等于属性的类型,即'mypackage.Impl'
基本上,这就是普通Java中的样子:
public class Test {
private Impl myImpl = new Impl();
public Base getBase() {
return myImpl;
}
}
Run Code Online (Sandbox Code Playgroud)
怎么能实现这个目标?我错过了什么吗?
PS我知道Backing Fields和创建自定义方法作为getter的解决方法,我只是好奇如何以优雅的Kotlin方式处理它.
kotlin ×1