Есть ли способ поменять себя (это) каким-либо другим объектом в 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:
- Я в однонаправленной иерархии (направленный ациклический граф)
- в одном из моих методов (точнее, метод прослушивателя событий) Я решаю, что я не лучший подходящий объект, чтобы быть здесь, поэтому:
- Я создаю новый объект (из подкласса моего класса, если быть точным), меняю себя с ним и позволяю себе собирать мусор в ближайшем будущем.
Итак, короче говоря, как я могу достичь в Java self become: (someClass new:someParameters)
? Есть ли некоторые шаблоны проектирования, которые я мог бы использовать?