我想为另一个类中的类进行函数扩展(用于 String 在里面 ModelAndView ,不适用于内部),但没有找到在没有类继承的情况下执行此操作的方法。有可能吗?
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 :
useExtension
with
with(x) { "abc".ext() }
不建议这样做,尽管在编写DSL时这样做是有意义的。