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 时这样做很有意义。
我想在另一个 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 时这样做很有意义。