自分自身 (これ) を Java の他のオブジェクトと交換する方法はありますか?
Smalltalk では次のように書くことができます。
Object subclass:myClass [
"in my method I swap myself with someone else"
swapWith:anObject [
self become:anObject.
^nil
]
]
myClass subclass:subClass [
]
obj := myClass new.
obj swapWith:subClass new.
obj inspect.
結果はAn instance of subClass
、明らかにです。
Javaで次のことを行う必要があります:
- 一方向の階層 (有向非巡回グラフ) にいる
- 私のメソッドの1つ(正確にはイベントリスナーメソッド)で、私はここにいるのに最適なオブジェクトではないと判断しました。
- 私は新しいオブジェクトを作成し (正確には私のクラスのサブクラスから)、自分自身を彼と交換し、近い将来ガベージコレクションされるようにします
要するに、Javaでどのように達成できますself become: (someClass new:someParameters)
か? 使用できる既知の設計パターンはありますか?