【问题标题】:Use Static Method in Java as Extension Method in Kotlin使用 Java 中的静态方法作为 Kotlin 中的扩展方法
【发布时间】:2017-09-09 15:14:50
【问题描述】:

我有一个用 Java 声明的静态方法:

class X {
    public static void foo(Y y) { … }
}

我很想将此方法用作 Kotlin 中 Y 类型实例的扩展方法:

import X.foo
…
y.foo()

这可能吗?我可以控制所有有问题的源代码,例如添加注释。

【问题讨论】:

    标签: java kotlin extension-methods


    【解决方案1】:

    我不知道自动引用这些的方法,但是编写自己的扩展来包装现有方法应该是可能的......

    fun Y.foo() = X.foo(this)
    

    【讨论】:

    • 是的,这当然是可能的,但我想避免为每个可以(理论上)在 Kotlin 中用作扩展方法的静态方法编写自己的扩展方法。
    • @Bombe 所以不要写静态方法。只需编写扩展方法,它就可以作为静态方法从 Java 中访问。
    • @EugenPechanec 这是将代码从 Java 移植到 Kotlin 的一部分。无论如何,原始方法迟早会消失,但与此同时,我真的很想简单地添加一个注释,并能够从 Kotlin 中将其用作扩展方法。 :)
    猜你喜欢
    • 2015-03-28
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 2013-03-05
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多