我想为另一个类内部的类创建一个函数扩展(对于String
中的ModelAndView
而不是内部),但是没有找到一种没有类继承的方法。有可能吗?
类扩展的示例:
class MyModelAndView : ModelAndView() {
infix fun String.to(value: Any?) {
addObject(this, value)
}
}
答案 0 :(得分: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时有意义。