另一个类中的类的函数扩展

问题描述 投票:2回答:1

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

类扩展的示例:

class MyModelAndView : ModelAndView() {
   infix fun String.to(value: Any?) {
      addObject(this, value)
   }
}
kotlin dsl
1个回答
3
投票

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

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

你只能在类中使用这个扩展,如useExtension所示,也可以在该类的上下文中使用,例如可以在with中使用:

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

虽然在编写DSL时有意义,但不建议这样做。

© www.soinside.com 2019 - 2024. All rights reserved.