class 在另一个 class 中的功能扩展

function extension for class in another class

我想在另一个 class 中为 class 做一个函数扩展(对于 ModelAndView 中的 String,而不是内部),但还没有找到没有 class 继承的方法。有可能吗?

class 扩展示例:

class MyModelAndView : ModelAndView() {
   infix fun String.to(value: Any?) {
      addObject(this, value)
   }
}

您可以在 classes 中创建成员扩展函数,但这些扩展只能在 class':

中访问
class X {
    fun String.ext() = println("extension on $this called")
    fun useExtension() {
        val text: String = "myText"
        text.ext()
    }
}

您只能在 class 中使用此扩展,如 useExtension 所示,也可以在 class 的上下文中使用,例如可以在 with:

with(x) { "abc".ext() }

不建议这样做,尽管在编写 DSL 时这样做很有意义。