Разница между Groovy def и Java Object?
Я пытаюсь понять разницу между
Groovy:
def name = "stephanie"
Java:
Object name = "stephanie"
поскольку оба, кажется, действуют как объекты в том, чтобы взаимодействовать с ними, я должен отнести их к их первоначальному предполагаемому типу.
Я изначально искал java-эквивалент динамического класса С# (Java, эквивалентный типу динамического класса С#?), и было предложено посмотреть Groovy def
например, мое впечатление от Groovy def заключается в том, что я мог бы сделать следующее:
def DOB = new Date(1998,5,23);
int x = DOB.getYear();
однако это не построит
спасибо, Стеф
Редактирование решения:
Оказывается, ошибка в том, что у меня был класс Groovy с общедоступными свойствами (в моем примере выше DOB), определенными с помощью def, но затем был доступен для доступа к ним из класса .java(в моем примере выше, вызывающем .getYear() в теме). Его ошибка новобранец, но проблема в том, что когда объект выходит из файла Groovy, он просто рассматривается как объект. Спасибо за вашу помощь!
Ответы
Ответ 1
По сути, между этими двумя утверждениями нет большой разницы; но поскольку Groovy является динамическим языком, вы можете написать
def name = "Stephanie"
println name.toUpperCase() // no cast required
в то время как вам понадобится явное преобразование в версии Java
Object name = "Stephanie";
System.out.println(((String) name).toUpperCase());
По этой причине def
имеет гораздо больше смысла в Groovy, чем необоснованное использование Object
в Java.
Ответ 2
Вы можете поэкспериментировать с groovy в веб-консоли groovy http://groovyconsole.appspot.com/
Работает исходный пример даты groovy.