Разница между 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.