scala – Int vs Integer:type mismatch,found:Int,required:
我将这些写入
scala口译员:
val a : Integer = 1; val b : Integer = a + 1; 我得到的消息: <console>:5: error: type mismatch; found : Int(1) required: String val b : Integer = a +1 ^ 为什么?我该如何解决? 解决方法
这个问题几乎是重复的:
Scala can’t multiply java Doubles? – 你可以看看
my answer,因为想法是类似的.
由于Eastsun已经暗示,答案是从java.lang.Integer(基本上是boxed int原语)到scala.Int的隐式转换,它是表示JVM原始整数的Scala方法. implicit def javaToScalaInt(d: java.lang.Integer) = d.intValue 并且互操作性已经实现 – 代码剪辑你给了应该编译很好!而使用scala.Int的代码需要java.lang.Integer似乎因为自动装箱而正常工作.所以以下作品: def foo(d: java.lang.Integer) = println(d) val z: scala.Int = 1 foo(z) 另外,正如michaelkebe所说,不要使用整数类型,这实际上是scala.Predef.Integer的缩写,因为它已被弃用,最有可能在Scala 2.8中被删除. 编辑:哎呀,忘了回答为什么.你得到的错误可能是,scala.Predef.Integer试图模仿Java的语法糖,其中“我的字符串”意味着字符串连接,a是一个int.因此,scala.Predef.Integer类型中的方法只能执行字符串连接(期望String类型),而不是自然整数加法. – Flaviu Cipcigan (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |