2010-10-14 38 views
11

Tôi đang cố gắng tìm ra sự khác biệt giữaSự khác biệt giữa hàm Groovy def và Java Object?

Groovy:

def name = "stephanie" 

Java:

Object name = "stephanie" 

như cả hai dường như đóng vai trò là các đối tượng trong đó tương tác với chúng tôi phải chuyển chúng vào loại dự định ban đầu của chúng.

tôi ban đầu về tìm kiếm một tương đương java của lớp năng động C# 's (Java equivalent to C# dynamic class type?) và nó đã được đề xuất để nhìn vào Groovy của def

ví dụ ấn tượng của tôi về def groovy là rằng tôi có thể làm như sau:

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

này sẽ không xây dựng

cảm ơn, Steph

Solu tion chỉnh sửa: Chỉ ra sai lầm iw như làm là tôi đã có một lớp groovy wtih thuộc tính công cộng (trong ví dụ của tôi ở trên DOB) được định nghĩa với def nhưng sau đó đã được attemping để truy cập chúng từ một lớp .java (trong ví dụ của tôi ở trên gọi .getYear() trên đó). Đó là một sai lầm tân binh nhưng vấn đề là một khi đối tượng rời khỏi một tệp Groovy nó đơn giản được coi là một đối tượng. Cảm ơn tất cả sự giúp đỡ của bạn!

+0

Khi bạn nói 'điều này sẽ không xây dựng', bạn có ngoại lệ không? –

Trả lời

16

Mỗi lần, không có nhiều sự khác biệt giữa hai câu lệnh đó; nhưng vì Groovy là một ngôn ngữ năng động, bạn có thể viết

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

trong khi bạn sẽ cần một diễn viên rõ ràng trong phiên bản Java

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

Vì lý do đó, def có ý nghĩa nhiều hơn nữa trong Groovy hơn sử dụng không có cơ sở trong số Object bằng Java.

+0

hy vọng ban đầu của tôi là def thực hiện theo cách đó nhưng khi tôi đã thử một cái gì đó như: 'def DOB = new Date (1999,5,2); dob.getYear(); ' nó sẽ không cho phép tôi xây dựng –

+1

và sau đó các ngoại lệ thời gian chạy chảy ... – hvgotcodes

+0

Tôi vừa thử ví dụ về .toUppercase của bạn và điều đó cũng không cho phép tôi xây dựng .. Tôi thiếu cài đặt trình biên dịch hay gì đó? Tôi đang sử dụng netbeans 6.9.1 –

Các vấn đề liên quan