Groovy / grails bagaimana cara menentukan tipe data?


176

Apa cara terbaik untuk menentukan tipe data di groovy?

Saya ingin memformat output secara berbeda jika ini kencan, dll.

Jawaban:


244

Untuk menentukan kelas suatu objek cukup panggil:

someObject.getClass()

Anda dapat menyingkat ini someObject.classdalam banyak kasus. Namun, jika Anda menggunakan ini pada Mapitu akan mencoba untuk mengambil nilai dengan kunci 'kelas'. Karena itu, saya selalu menggunakan getClass()meskipun sedikit lebih lama.

Jika Anda ingin memeriksa apakah suatu objek mengimplementasikan antarmuka tertentu atau memperluas kelas tertentu (misalnya Tanggal) gunakan:

(somObject instanceof Date)

atau untuk memeriksa apakah kelas dari sebuah objek adalah persis kelas tertentu (tidak subclass dari itu), gunakan:

(somObject.getClass() == Date)

2
instanceofsangat bagus untuk memfilter berdasarkan antarmuka.
cdeszaq

Setidaknya dalam Groovy terbaru (2.3.7), kita juga dapat menulis someObject.class
loloof64

5
@LaurentBERNABE yang berfungsi dalam kebanyakan kasus, tetapi tidak dalam semua kasus, misalnya sebuah Mapinstance
Dónal

Anda benar: kami mendapatkan nol dalam hal ini. Minta maaf atas kesalahan ini.
loloof64

Lalu apa ini? def test = {} println test.getClass() kelas Script1 $ _run_closure1 ??
Petrunov

33

Cara asyik sederhana untuk memeriksa jenis objek:

somObject in Date

Dapat diterapkan juga ke antarmuka.


3

Hanya untuk menambahkan opsi lain ke jawaban Dónal, Anda juga masih dapat menggunakan java.lang.Object.getClass()metode lama yang baik .


0

Anda dapat menggunakan isCase Keanggotaan Operator () yang merupakan cara asyik lainnya:

assert Date.isCase(new Date())

-20

somObject instanceof Date

seharusnya

somObject instanceOf Date


11
Ini tidak benar. instanceofsemua harus dalam huruf kecil.
cdeszaq
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.