Можно ли перегрузить неявные преобразования типов в Groovy? - PullRequest
2 голосов
/ 16 января 2011

Скажем, у меня есть функция

def method1(MyClass2 mc2) {...}

, и я вызываю ее с объектом типа MyClass1.Есть ли способ, которым я могу указать, как неявно конвертировать из MyClass1 в MyClass2, чтобы вызов метода работал без необходимости явно говорить method1(mc1 as MyClass2)?

1 Ответ

4 голосов
/ 16 января 2011

Если MyClass1 не реализует / не расширяет MyClass2, я ничего не знаю о том, что будет выполнять преобразование «как MyClass2» без перегрузки старого резервного Java-метода. Явная перегрузка метода с подписью, включая MyClass1:

def method1(MyClass1 mc1) { 
    method1(mc1 as MyClass2)
}

Другая, более интересная альтернатива - не указывать явно метод method1, чтобы он не требовал наличия экземпляра MyClass2:

def method1(mc) {
    // do stuff and let mc walk/talk/quack like MyClass2
    // or even do the "as MyClass2" in this method if you need it for something further down.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...