我想为另一个类内部的类创建一个函数扩展(对于String
中的ModelAndView
,而不是内部),但是没有找到一种没有类继承的方法。有可能吗?
类扩展的示例:
class MyModelAndView : ModelAndView() {
infix fun String.to(value: Any?) {
addObject(this, value)
}
}
您可以在类中创建成员扩展函数,但这些扩展只能在类'中访问:
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时有意义,但不建议这样做。