2011-08-11 13 views
12

Bir neslim var. Enum türünde olup olmadığını kontrol etmek istiyorum. Bunu yapmanın iki yolu var.class.isEnum() veya instagram Enum'u kullanmak daha mı iyi?

object.getClass().isEnum() 

veya

object instanceof Enum 

daha iyi biri mi? Bence object instanceof Enum yılında

+2

"Daha iyi" ile "okuması daha kolay", "daha hızlı çalışır" vb. – templatetypedef

+0

@templatetypedef Çoğunlukla performans, daha kolay okunur. –

+0

Bir nesnenin bir Enum olup olmadığını belirlemeniz gerekiyorsa, sormanız gereken soru "Neden bu korkunç tasarımı kullanıyorum". – DwB

cevap

20

çeşitli nedenlerden dolayı iyidir: "Bu bir enum olan":

  • Burada ne istendiğinin çok açıktır?
  • Bir NullPointerException Bu daha kısa
  • (objectnull ise, sadece false değerlendirecek) riske etmez.

Ben sadece Class nesneye değil, somut bir örneğine erişim varsa olacağını isEnum() kullanarak görseniz tek nedeni.

+0

+1. Şu anda bir döngüde bunu yapıyorum ve –

+1

'un önemi olup olmayacağından emin değildim. Performansa göre, 'instanceof' de daha hızlı çalışıyor (test edilen sınıfa bağlı olarak değişiyor, fakat tüm testlerim en azından IsEnum'dan% 33 daha hızlı, en hızlı% 450 daha hızlı olmuştur). isEnum: 2691826 instanceof: 658774 – ty1824

+0

@ ty1824 - harika. İsimlerim tam aradığım şey –

İlgili konular