SORU
27 Ocak 2011, PERŞEMBE


Neden't Android daha çeteleler kullanılmaz?

Gerçekten C kullanarak sevmeye başladım# ve çeşitli nedenlerden dolayı benim kod Java çeteleler:

  • Tip-güvenli tamsayılar, dizeler veya boolean bayrakları kümesi daha vardır.
  • Daha okunabilir kod götürecekler.
  • Tamsayı ya da bir dize daha geçersiz bir değer için bir numaralandırma ayarlamak için daha zordur.
  • Kolay bir değişken veya parametre için izin verilen değerler keşfetmek için yapıyorlar.
  • Okuduğum her şey de tamsayı olarak C yapmasını gösterir# ve en Jvm'ler.

Ancak, Android çerçevesinde çeşitli bayraklar elden ele dolaşması gerekiyor, ama hiçbiri çeteleler kullanmak gibi bir çok vaka var. Bunların kullanımı yararlı olacağını düşünürdüm burada bir kaç örnekToast.LENGTH_SHORT / Toast.LENGTH_LONG View.GONE, View.VISIBLE vb.

Neden bu? Çeteleler Dalvik basit daha kötü tamsayı değerleri gerçekleştirmek? Benim bilmediğim başka bir dezavantajı var mı?

CEVAP
27 Ocak 2011, PERŞEMBE


Bu cevap Mart 2011 tarihi itibariyle güncel değil.

Çeteleler Froyo ve kullanılabilir - Android VM ekibinin bir üyesi (his blog) Bu cevap (Why was “Avoid Enums Where You Only Need Ints” removed from Android's performance tips?) göre.


Önceki Cevap:

Resmi Android takım önerisi bunu önleyebilirsiniz zaman çeteleler önlemek için:

Çeteleler çok uygun, ama ne yazık ki boyutu zaman acı verici olabilir ve hız önemli. Örneğin, bu:

public enum Shrubbery { GROUND, CRAWLING, HANGING }

740 bayt ekler senin .dex göre dosya eşdeğer üç kamu ile sınıf statik son değer vermez. İlk kullanımda, sınıf başlatıcı çağırır nesneleri her temsil eden yöntemi numaralandırılmış değerleri. Her nesne kendi statik alanı alır ve tam set, bir dizi içinde depolanır (bir alan adı "$DEĞERLERİ"). statik Bu kod ve veri bir sürü, sadece üç tamsayılar. Ayrıca, bu:

Shrubbery shrub = Shrubbery.GROUND;

statik bir alan arama neden olur. Eğer "ZEMİN" static final int, edildi derleyici bilindiği gibi davranmaya iten sabit ve satır içi.

Kaynak: Avoid Enums Where You Only Need Ints

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • manadude21

    manadude21

    11 Mart 2008
  • MusicDeluxeTV

    MusicDeluxeT

    14 Mayıs 2010
  • THE RED DRAGON

    THE RED DRAG

    6 ŞUBAT 2009