【问题标题】:Add Extension function in kotlin to all classes将 kotlin 中的扩展功能添加到所有类
【发布时间】:2019-03-20 16:04:25
【问题描述】:

是否可以为所有类添加扩展功能?我正在考虑将它添加到一些常见的基类中,比如 Object.有可能吗?

【问题讨论】:

    标签: kotlin extension-methods kotlin-extension


    【解决方案1】:

    对于 Kotlin,Any 是类似于 Java 的 Object 的超级类型。

    fun Any.myExtensionFunction() {
        // ...
    }
    

    如果你也想支持 null-receiver:

    fun Any?.myExtensionFunction() {
        // ...
    }
    

    【讨论】:

      【解决方案2】:

      这取决于您是否要在签名中使用对象的类型(在另一个参数中,或在返回类型中)。如果没有,请使用Any(?),正如 Kevin Robatel 的回答所说;但如果你这样做,你需要使用泛型,例如(来自标准库)

      inline fun <T, R> T.run(block: T.() -> R): R
      
      inline fun <T> T.takeIf(predicate: (T) -> Boolean): T?
      

      等等

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多