SORU
20 NİSAN 2013, CUMARTESİ


Otomatik kutulama Java 6 arasındaki farklar, vs Java 7

Selam ve Java SE 7 Java SE 6 arasında otomatik kutulama davranışlarında bir farklılık fark ettim. Bu iki sürümü arasındaki bu davranış değişiklikleri herhangi bir belge bulamadım, bu yüzden merak ediyorum.

Burada basit bir örnek:

Object[] objs = new Object[2];
objs[0] = new Integer(5);
int myInt = (int)objs[0];

Bu Java SE 7 javac ile iyi derler. Eğer derleyici "kaynak 1.6 son satırda bir hata alıyorum" bağımsız değişken: . verirsem ancak,

inconvertible types
found   : java.lang.Object
required: int

Yerli sürüm 6 derleyici (kaynak herhangi bir seçeneği olmadan) ile derlemek için Java SE 6 indirmeye çalıştım. Ve yukarıdaki hata kabul verir.

Ne oluyor? Daha fazla deney bazı Java 6 kutulama sadece açıkça derleme zamanında () kutulu türü olan değerleri kaldırmak gibi görünüyor. Örneğin, bu her iki versiyonda da çalışır:

Integer[] objs = new Integer[2];
objs[0] = new Integer(5);
int myInt = (int)objs[0];

Öyle görünüyor ki arasında Java 6 ve 7, kutulama Özelliği Geliştirilmiş, böylece olabilir dökme ve ciltsiz nesne türleri bir çırpıda, bilmeden (derleme zamanında) değerdir uygun kutulu yazın. Ancak, okuyarak, Java Dil Şartnamesi veya blog yayınlarında olduğu yazılı zaman Java 7 çıktı, göremiyorum herhangi bir değişiklik bu şey, çok merak ediyorum ne değişiklik olduğunu ve bu "özelliği" denir?

Sadece bir merak: değişim Nedeniyle, olası tetikleyici "" unboxings: . yanlış olur

Object[] objs = new Float[2];
objs[0] = new Float(5);
int myInt = (int)objs[0];

Bu güzel derler ama zamanında bir ClassCastException verir.

Birisi bu konuda bana yardımcı olabilir umuyoruz. Şimdiden teşekkür ederim.

CEVAP
20 NİSAN 2013, CUMARTESİ


section 5.5 Casting Conversion of Java 7 JLS dili muhtemelen izin dönüşümleri açıklamak için the same section in the Java 5/6 JLS, göre güncellendi gibi görünüyor.

Java 7 diyor İDEA

Bir başvuru türü bir ifadesi dönüşüm kutulama tarafından hatasız ilkel bir türü için döküm dönüşüm dönebilir.

Java 5/6:

Bir başvuru türü değeri dönüşüm kutulama tarafından ilkel bir türü (§5.1.8) çevirebilirsiniz.

Java 7 İDEA da bir tablo (tablo 5.1) temel öğeler için başvuru türleri izin dönüşümler (bu tablo Java 5/6, İDEA dahil değildir) içerir. Bu açıkça kutulama ile daralan bir referans olarak dönüşüm ilkellere nesneden atmalarını listeler.

Nedeni this email açıklanmıştır:

Sonuç: Eğer spec. sağlar (Nesne)(int) ayrıca (int)(Nesne) izin olmalıdır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Joshua Benedict

    Joshua Bened

    26 EKİM 2013
  • Liam Underwood

    Liam Underwo

    19 Mayıs 2009
  • Vortez

    Vortez

    27 Temmuz 2009