Groovy / grails làm thế nào để xác định một loại dữ liệu?


176

Cách tốt nhất để xác định loại dữ liệu trong Groovy là gì?

Tôi muốn định dạng đầu ra khác nhau nếu đó là một ngày, vv

Câu trả lời:


244

Để xác định lớp của một đối tượng chỉ cần gọi:

someObject.getClass()

Bạn có thể viết tắt này someObject.classtrong hầu hết các trường hợp. Tuy nhiên, nếu bạn sử dụng cái này trên Mapnó, nó sẽ cố lấy giá trị bằng khóa 'class'. Vì điều này, tôi luôn sử dụng getClass()mặc dù nó lâu hơn một chút.

Nếu bạn muốn kiểm tra xem một đối tượng có thực hiện một giao diện cụ thể hay mở rộng một lớp cụ thể (ví dụ: Ngày), hãy sử dụng:

(somObject instanceof Date)

hoặc để kiểm tra xem lớp của một đối tượng có chính xác là một lớp cụ thể không (không phải là lớp con của nó), hãy sử dụng:

(somObject.getClass() == Date)

2
instanceoflà tuyệt vời để lọc dựa trên giao diện.
cdeszaq

Ít nhất là trong Groovy mới nhất (2.3.7), chúng ta cũng có thể viết someObject
Class

5
@LaurentBERNABE hoạt động trong hầu hết các trường hợp, nhưng không phải trong tất cả, ví Mapdụ
Dónal

Bạn nói đúng: chúng tôi nhận được null trong trường hợp này. Xin lỗi vì sai lầm.
loloof64

Vậy thì đây là cái gì? def test = {} println test.getClass() lớp Script1 $ _run_clenses1 ??
Petrunov

33

Cách Groovy đơn giản để kiểm tra loại đối tượng:

somObject in Date

Cũng có thể được áp dụng cho các giao diện.


3

Chỉ cần thêm tùy chọn khác vào câu trả lời của Dónal, bạn vẫn có thể sử dụng java.lang.Object.getClass()phương pháp cũ tốt .


0

Bạn có thể sử dụng Toán tử thành viên isCase (), một cách khác:

assert Date.isCase(new Date())

-20

somObject instanceof Date

nên là

somObject instanceOf Date


11
Điều này LAF không đúng. instanceoftất cả nên ở dạng chữ thường
cdeszaq
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.