SORU
26 EKİM 2011, ÇARŞAMBA


Bir tamsayı değişmezi atmak istiyorum (int) burada neden bir fikriniz var mı?

Aşağıdaki örnekte

int i = -128;
Integer i2 = (Integer) i; // compiles

Integer i3 = (Integer) -128; /*** Doesn't compile ***/

Integer i4 = (Integer) (int) -128; // compiles
Integer i4 = -128; // compiles
Integer i5 = (int) -128; // compiles
Integer i6 = (Integer) (-128); // compiles
Integer i7 = (Integer) 0-128; // compiles

(Integer) -128 dökme yapamam ama (int) -128 dökme edebilirim.

Ben her zaman -128 int tip ve (int) ile döküm yedek olması gerektiğini düşündüm.

i3 satırında hata

cannot find symbol variable Integer

Java 6 update 29 ile bunu denedim ve Java 7 update 1.

EDİT: -128. yerine 128 ile aynı davranışı olsun Tekli ve ikili operatörler arasında karışıklık gibi görünüyor.

CEVAP
26 EKİM 2011, ÇARŞAMBA


Derleyici Integer 17 *döküm yerine (Integer) 128 çıkarmak için çalışır. () bunu düzeltmek için ekleyin

Integer i3 = (Integer) -128; // doesn't compile
Integer i3 = (Integer) (-128); // compiles

Yorum BoltClock göre int dökme ayrılmış bir sözcüktür ve bu yüzden bana göre mantıklı bir tanımlayıcı olarak yorumlanabilir. çünkü beklendiği gibi çalışır.

Ve Bringer128 bu İDEA 15.16 Referans buldum.

 CastExpression:
    ( PrimitiveType Dimsopt ) UnaryExpression
    ( ReferenceType ) UnaryExpressionNotPlusMinus

Gördüğünüz gibi, ilkel bir türü için döküm UnaryExpression, bir başvuru türü için ise döküm UnaryExpressionNotPlusMinus herhangi bir gerektirir gerektirir. Bu sadece JLS 15.15 bir CastExpression önce tanımlanmıştır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • IGN

    IGN

    19 EYLÜL 2006
  • LatinNinja99

    LatinNinja99

    28 EKİM 2011
  • Matthew Pearce

    Matthew Pear

    9 AĞUSTOS 2009