是否可以创建一个扩展函数并像静态一样调用它?
例如...
fun System.sayByeAndExit() {
println("Goodbye!")
System.exit()
}
fun main(args: Array<String>) {
System.sayByeAndExit() // I'd like to be able to call this
}
我知道代码示例不起作用...
我知道 kotlin 的扩展函数是静态解析的,如Kotlin Reference (Extension Functions)中所述,但这并不意味着它们可以像类中的静态函数一样被调用(在 Java 意义上)。
我也知道这段代码不起作用,因为没有 System 实例可以传递给编译器将生成的方法;因此它不会编译。
我为什么要这个?
你们中的一些人可能想知道为什么这种行为是可取的。我能理解为什么你会认为不是,所以这里有一些原因:
- 它具有标准扩展功能提供的所有好处。
- 不需要创建类 的实例来访问额外的功能。
- 可以从应用程序范围的上下文中访问这些函数(假设类是可见的)。
总结...
Kotlin 有办法将静态函数“挂钩”到类上吗?我很想知道。