Groovy / grails nasıl bir veri türü belirlenir?


176

Harika veri türünü belirlemenin en iyi yolu nedir?

Çıktı bir tarih vb. İse farklı biçimlendirmek istiyorum.

Yanıtlar:


244

Bir nesnenin sınıfını belirlemek için şunu çağırmanız yeterlidir:

someObject.getClass()

Bunu someObject.classçoğu durumda kısaltabilirsiniz. Ancak, bunu bir üzerinde kullanırsanız, Map'class' anahtarıyla değeri almaya çalışır. Bu yüzden her zaman kullanıyorumgetClass() biraz daha uzun olmasına rağmen .

Bir nesnenin belirli bir arabirimi uygulayıp uygulamadığını veya belirli bir sınıfı (örneğin Tarih) genişletip genişletmediğini kontrol etmek istiyorsanız:

(somObject instanceof Date)

veya bir nesnenin sınıfının tam olarak belirli bir sınıf (alt sınıf değil) olup olmadığını kontrol etmek için şunu kullanın:

(somObject.getClass() == Date)

2
instanceofarayüze dayalı filtreleme için mükemmeldir.
cdeszaq

En azından son
Groovy'de

5
Çoğu durumda çalışır, ama hepsi de, örneğin bir @LaurentBERNABE Mapörneği
Donal

Haklısın: bu durumda null oluruz. Hata için özür dileriz.
loloof64

O zaman bu nedir? def test = {} println test.getClass() sınıf Script1 $ _run_closure1 ??
Petrunov

33

Nesne türünü kontrol etmenin basit harika yolu:

somObject in Date

Arayüzlere de uygulanabilir.


3

Sadece Dónal'ın cevabına başka bir seçenek eklemek için eski iyi java.lang.Object.getClass()yöntemi de kullanabilirsiniz .


0

Başka bir harika yol olan isCase () Üyelik İşleci'ni kullanabilirsiniz:

assert Date.isCase(new Date())

-20

somObject instanceof Date

olmalı

somObject instanceOf Date


11
Bu doğru değil. instanceofhepsi küçük harf olmalıdır.
cdeszaq
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.