Допустим, у меня есть классScala: заменить метод во время выполнения
class Original {
def originalMethod = 1
}
Теперь, скажем, у меня есть экземпляр этого
val instance = new Original
Можно ли теперь сделать что-то instance
во время выполнения заменить originalMethod
другим способом? (Предоставляется подпись остается неизменным)
К примеру, в настоящее время, при вызове instance.originalMethod
следующий код будет называться println("test"); 1
EDIT Я не могу назвать new Original
. У меня есть только существующий экземпляр, который я должен изменить.
EDIT 2 (@Aleksey Измайлов ответ) Это хорошее решение, но это не совсем то, что я ищу. Я думаю больше о терминах тестирования - написании класса «нормально», без указания функций как переменных, а не методов
PS. Я наткнулся на этот вопрос, пытаясь имитировать шпиона Mockito.
Возможно ли в вашем случае использовать агрегацию? – maks
Что вы подразумеваете под агрегацией? – Andrey