別のクラスのクラスの内部関数拡張(ModelAndView
のString
では、内部ではありません)を作成したいが、クラスの継承なしでこれを行う方法が見つかりませんでした。まったく可能ですか?クラス拡張の別のクラスのクラス用の関数の拡張
例:
class MyModelAndView : ModelAndView() {
infix fun String.to(value: Any?) {
addObject(this, value)
}
}
別のクラスのクラスの内部関数拡張(ModelAndView
のString
では、内部ではありません)を作成したいが、クラスの継承なしでこれを行う方法が見つかりませんでした。まったく可能ですか?クラス拡張の別のクラスのクラス用の関数の拡張
例:
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などを書くときには意味があります。
「クラス拡張なし」とはどういう意味ですか? –
sory、私は継承を意味する –
それはまだ明らかではありません。何がうまくいかないかの例を見せてもらえますか? –