У меня есть приложение Java, которое использует встроенные строчные скрипты, используя GroovyClassLoader
. Все отлично работает, пока я не ударил нечетную ошибку при передаче типов Java в скрипт Groovy.java.util.Date Java или Java java.util.Date?
Моя проблема: таким образом, я передаю java.util.Date
в качестве параметра в строгий скрипт. Я обнаружил, что у java.util.Date Groovy есть фантастическая функция clearTime(). Однако, когда я пытаюсь вызвать эту функцию я получаю это исключение:
groovy.lang.MissingMethodException: No signature of method: java.util.Date.clearTime() is applicable for argument types:() values: []
Я полагаю, это потому, что у меня есть Дата Java, а не Groovy Date. Есть ли способ конвертировать между ними.
Я признаю, что я не совсем понимаю, как Groovy, кажется, переопределяет типы jdk. (Поэтому я даже не знаю, подходит ли это правильная терминология для использования здесь.) Пожалуйста, исправьте меня, если я полностью ошибаюсь в том, что происходит, когда вы создаете java.util.Date внутри Groovy и когда вы передаете один в функцию от Java.
Кроме того, в этом случае я рассматриваю возможность отказа от прохождения дат java и перехода к Джоде. Однако я хотел бы знать, что делает Groovy в мире, когда Java-типы передаются ему. Я уверен, что рано или поздно я снова столкнусь с этой проблемой. –
Я не собираюсь предлагать это как ответ, но для этого я должен использовать Java GregorianCalendar и использовать его set() для установки даты в него, а затем удалить все поля, t нравится. –
Можете ли вы опубликовать пример этого сбоя? Существует нет «Groovy date» как таковой, это обычная дата с метаклассом, который просматривается groovy, выполняя ваш отличный код. –