Я пытаюсь воспользоваться удобством синтаксиса сценариев groovy для назначения свойств, но у меня возникают проблемы с конкретным случаем.Я, должно быть, здесь упускаю что-то простое.Я определяю класс A, B, C следующим образом:
class A {
A() {
println "Constructed class A!"
}
}
class B {
B() {
println "Constructed class B!"
}
}
class C {
private member
C() {
println "Constructed class C!"
}
def setMember(A a) {
println "Called setMember(A)!"
member = a
}
def setMember(B b) {
println "Called setMember(B)!"
member = b
}
}
И затем попробуйте выполнить следующие вызовы в скрипте:
c = new C()
c.setMember(new A()) // works
c.member = new A() // works
c.setMember(new B()) // works
c.member = new B() // doesn't work!
Последнее назначение приводит к ошибке: «Невозможно привестиобъект класса B для класса A ". Почему он не вызывает надлежащий метод setMember для класса B, как это делается для класса A?