2010-10-14 15 views
11

che sto cercando di capire la differenza traDifferenza tra Groovy Def e Java Object?

Groovy:

def name = "stephanie" 

Java:

Object name = "stephanie" 

in quanto entrambi sembrano agire come oggetti di quella di interagire con loro devo gettali al loro tipo previsto originale.

ero in origine su una ricerca di una Java equivalente di classe dinamica C# 's (Java equivalent to C# dynamic class type?) ed è stato suggerito di guardare Groovy def

ad esempio la mia impressione di definizione di Groovy è che ho potuto effettuare le seguenti operazioni:

def DOB = new Date(1998,5,23); 
int x = DOB.getYear(); 

però questo voleva costruire

grazie, Steph

Solu modifica edit: Si scopre l'errore che sto facendo è che ho avuto una classe groovy con proprietà pubbliche (nel mio esempio sopra DOB) definite con def ma poi tentavo di accedervi da una classe .java (nel mio esempio sopra chiamata .getYear() su di essa). È un errore da principiante, ma il problema è che una volta che l'oggetto lascia un file Groovy viene semplicemente trattato come un oggetto. Grazie per tutto il vostro aiuto!

+0

Quando si dice 'this wont build', hai un'eccezione? –

risposta

16

Per sé, non c'è molta differenza tra queste due affermazioni; ma dal momento che Groovy è un linguaggio dinamico, è possibile scrivere

def name = "Stephanie" 
println name.toUpperCase() // no cast required 

mentre si avrebbe bisogno di un cast esplicito nella versione Java

Object name = "Stephanie"; 
System.out.println(((String) name).toUpperCase()); 

Per questo motivo, def ha molto più senso in Groovy di uso infondata di Object in Java.

+0

la mia speranza originale era che def performaed in quel modo ma quando ho provato qualcosa come: 'def DOB = new Date (1999,5,2); dob.getYear();' non mi consente di creare –

+1

e quindi le eccezioni di runtime sono scorrevoli ... – hvgotcodes

+0

Ho appena provato il tuo esempio di .toUppercase e anche questo non mi permette di costruire .. mi manca un'impostazione del compilatore o qualcosa del genere? Sto usando netbeans 6.9.1 –

Problemi correlati