Bu soru hemen hemen aynısı olup: Scala can't multiply java Doubles? - Fikir benzer olduğu gibi, hem my answer bakabilirsiniz. Eastsun zaten ima
gibi cevap JVM ilkel sistem tam sayılan temsil Scala bir yoldur scala.Int
için (temelde bir int
ilkel kutu) bir java.lang.Integer
bir kapalı dönüştürme vardır.
implicit def javaToScalaInt(d: java.lang.Integer) = d.intValue
Ve birlikte çalışabilirlik elde edilmiştir - Kod sadece uygun derleme verdik kestirmene! scala.Int
'un kullanıldığı ve java.lang.Integer
numaralı kodun kullanıldığı kod, otomatik kutulama nedeniyle gayet iyi çalışıyor gibi görünüyor. Yani şu işleri: - bu artık kullanılmamaktadır ve büyük ihtimalle Scala 2.8'de kaldırılacak gibi aslında scala.Predef.Integer
için kısaltmadır michaelkebe dediği gibi
Ayrıca
def foo(d: java.lang.Integer) = println(d)
val z: scala.Int = 1
foo(z)
, Integer
türünü kullanmayın.
EDIT: Oops ... nedenini yanıtlamayı unuttum. Aldığınız hata, muhtemelen scala.Predef.Integer
'un, a + "my String"
dizgisi dizgisi, a
'un int
olduğu anlamına gelen Java'nın sözdizimsel şekerini taklit etmeye çalışmasıdır. Bu nedenle, scala.Predef.Integer
türündeki +
yönteminde, dize birleştirme (bir String
türü bekleniyor) ve doğal tamsayı ilavesi yok.
- Flaviu Cipcigan