【发布时间】:2019-03-20 16:04:25
【问题描述】:
是否可以为所有类添加扩展功能?我正在考虑将它添加到一些常见的基类中,比如 Object.有可能吗?
【问题讨论】:
标签: kotlin extension-methods kotlin-extension
是否可以为所有类添加扩展功能?我正在考虑将它添加到一些常见的基类中,比如 Object.有可能吗?
【问题讨论】:
标签: kotlin extension-methods kotlin-extension
对于 Kotlin,Any 是类似于 Java 的 Object 的超级类型。
fun Any.myExtensionFunction() {
// ...
}
如果你也想支持 null-receiver:
fun Any?.myExtensionFunction() {
// ...
}
【讨论】:
这取决于您是否要在签名中使用对象的类型(在另一个参数中,或在返回类型中)。如果没有,请使用Any(?),正如 Kevin Robatel 的回答所说;但如果你这样做,你需要使用泛型,例如(来自标准库)
inline fun <T, R> T.run(block: T.() -> R): R
inline fun <T> T.takeIf(predicate: (T) -> Boolean): T?
等等
【讨论】: