是否可以为Java类添加"静态"扩展函数?

Max*_*kov 13 kotlin

例如,我有Java类(来自外部库):

class A {} // This is Java class
Run Code Online (Sandbox Code Playgroud)

我想添加写在Kotlin上的扩展函数,并将其命名为:

A.foo() // This is call of extension function `foo` from Kotlin code
Run Code Online (Sandbox Code Playgroud)

据我所知,目前在Kotlin中是不可能的,因为它仅支持伴随对象的KClass-es的 "静态"扩展功能.对?

似乎没有什么可以防止以后在Kotlin中实现这样的功能.对?

yol*_*ole 27

你是对的.在Kotlin 1.0中,您可以在Kotlin类的伴随对象上定义扩展函数,并且可以使用A.foo()语法调用此类函数.支持在Java类上定义静态扩展函数是Kotlin未来版本的一个可能特性,但目前还不在Kotlin 1.1的路线图上.

  • 那么......答案是它仍然不可能? (3认同)
  • 这应该是!我们一直在 Swift 中使用它,它在很多场景中都很有用(即:Date.fromJSON( ... ))。 (2认同)