2012-12-17 17 views
6

Olası Çoğalt: Örneğin Integer foo = 4 için
Java: Long result = -1: cannot convert from int to longJava neden baskı ve otomatik kutulamayı desteklemiyor?

ve Long foo = 4L hem derleme, ama Long foo = 4 yapmaz. Bunun için bir mantık var mı?

+2

İyi soru. Bunun bazı belirsizliklere yol açıp açmayacağını merak ediyorum. (+1) – NPE

+0

Teknik olarak 'Long foo = 4' derleme zamanında değerlendirilemez. –

+0

Dönüştürmeyi otomatik kutulamayla karıştırırsınız. – Bevor

cevap

4
Long foo = 4; 

şu anlama gelir: sınıf Long bir nesneye değeri 4 bir int verin. Otomatik kutulama, bunu yapmak ve başarısız olmak için kullanmayı deneyecektir, çünkü otomatik kutulama yalnızca uygun ilkel için uygulanabilir. Bu iki şekilde düzeltilebilir:

Long foo = (long) 4; 
Long foo = 4L; 

ilk durumda İkincisinde int 4 4. long artığını, uzun sağlarlar.

Soruyu yanıtlamak için: Java, otomatik döküm özelliğini desteklemez ve yazım için çok katıdır; bu da muhtemelen otomatik olarak desteklemiyordur.

İlgili konular