Я довольно новичок в groovy (и у меня нет опыта работы с Java), но я столкнулся с проблемой, которая для меня не имеет смысла. Я предполагаю, что мое непонимание того, как объекты и классы работают на этих языках. Мой вопрос, вероятно, очень прост - любая помощь очень ценится.Groovy TimeDuration Типы аргументов
Я пытаюсь рассчитать количество недель между двумя датами. Мой код это (может быть более кратким, но я расширил его, чтобы сделать каждый шаг более четкий):
import groovy.time.TimeCategory
start = new Date(year: 2014, month: Calendar.APRIL, date: 1, hours: 12, minutes: 12, seconds: 0)
finish = new Date(year: 2014, month: Calendar.MAY, date: 4, hours: 1, minutes: 12, seconds: 0)
use (TimeCategory) {
diff = finish - start
println getWeeks(diff)
}
Я получаю сообщение об ошибке
groovy.lang.MissingMethodException: Нет подписи по методу: Script1.getWeeks() применяется для типов аргументов: (groovy.time.TimeDuration) значения: [32 дней, 13 часов]
Однако, если изменить линию печати на println diff.getClass().name
Мои результаты Выход
groovy.time.TimeDuration
Так что мой вопрос по существу: если diff
объект класса groovy.time.TimeDuration
и getWeeks требует аргументов этого класса, почему я получить сообщение об ошибке?