SORU
4 Aralık 2008, PERŞEMBE


Java jenerik tipi silme - ne zaman ve

Java türü silme hakkında on Sun's website okudum.

Ne tür silme oluşuyor?Derleme zamanı / çalışma zamanı? Sınıf / çalışma zamanı yüklenir? Sınıf örneği?

Birçok site (Güneş öğretici yukarıda da dahil olmak üzere) tür silme derleme zamanında oluşur söylüyorlar. Eğer tür bilgileri tamamen derleme zamanında kaldırıldı değilse, nasıl olduğunu GÖRDÜM bir yöntem jenerik kullanarak herhangi bir tür ile çağrıldığında türü uyumluluk bilgileri kontrol etmek veya tür bilgileri yanlış geliyor.

Aşağıdaki örneği inceleyin: class A, 2**. bir yöntem var Ki Biz a.java derleme ve sınıf a.class dosya almak.

Şimdi yöntemi non-parametrik bağımsız (raw) ile boş çağıran başka bir B sınıfı yaratırız empty(new Box()). Biz b.java sınıf içinde a.class derleme, javac bir uyarı yükseltmek için yeterince akıllı. Yani A.classvardırbazı tür bilgiler içinde saklı.

Benim tahminim yazın silme sınıfı yüklendiğinde oluşur bu olurdu, ama bu sadece bir tahmin. Ne zaman oluyor?

CEVAP
4 Aralık 2008, PERŞEMBE


Tür silme için geçerlidirkullanınjenerik. Tip/sınıf dosyası veya bir yöntem olup olmadığını söylemek kesinlikle meta varve kısıtlamaları vb ne genel,. Ama jenerikkullanılırderleme zamanı denetler ve yürütme zamanı atmalarını dönüştürülmüş oluyorlar. Bu kod:

List<String> list = new ArrayList<String>();
list.add("Hi");
String x = list.get(0);

içine derlenmiş

List list = new ArrayList();
list.add("Hi");
String x = (String) list.get(0);

Yürütme zaman liste için T=String nesne öğrenmenin bir yolu yok kimsede bu bilgi yok.

... ama List<T> arayüzü kendisi hala genel olarak kendini tanıtır.

Sadece netleştirmek için, derleyici ile ilgili bilgileri korumak . EDİT: ^em>değişkenList<String> - ama sen hala T=String O öğrenemez listesi için insanın kendisini nesne.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dom Esposito

    Dom Esposito

    26 Mayıs 2011
  • Eric Enge

    Eric Enge

    2 Kasım 2009
  • MattSteffanina 2

    MattSteffani

    28 Kasım 2007