假设我有一个interface Base并且我们实现了该接口class Base1 : Base.
我希望表单中有一个扩展函数
fun ArrayList<Base>.myFun()
Run Code Online (Sandbox Code Playgroud)
也工作arrayListOf(Base1(), Base1()).myFun(),但它没有.它要求列表Base不是类型Base1.
这不是很奇怪吗?或者我只是错过了什么?
而且,我可以选择在接口的所有子类上编写一个函数吗?
谢谢!
您需要允许扩展功能接受子实现
interface Base
class Base1: Base
fun ArrayList<out Base>.myFun() = println(toString())
fun main(args: Array<String>) {
arrayListOf(Base1(), Base1()).myFun()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2685 次 |
| 最近记录: |