Scala – 将整数列表映射到接收java.lang.Object的方法
在
Scala-IDE中工作,我有一个
Java库,其中一个方法接收java.lang.Object.我想将一个Int值列表映射到它.唯一有效的解决方案是:
val listOfInts = groupOfObjects.map(_.getNeededInt) for(int <- listOfInts) libraryObject.libraryMethod(int) 而以下一个: groupOfObjects.map(_.getNeededInt).map(libraryMethod(_) 乃至 val listOfInts = groupOfObjects.map(_.getNeededInt) val result = listOfInts.map(libraryObject.libraryMethod(_)) 说
和类似的东西 val result = listOfInts.map(libraryObject.libraryMethod(x => x.toInt)) 要么 val result = listOfInts.map(libraryObject.libraryMethod(_.toInt)) 也不起作用. 1)为什么会这样?据我所知,for和map例程差别不大! 2)另外:什么意思你可能希望使用类型ascription:x:java.lang.Integer?我该怎么办?我尝试明确指定类型,如x:Int => x.toInt,但这太错误了.那么什么是“类型归属”? 更新: T.Grottker提出的解决方案补充说.我得到的错误是这样的:
而且我想,OMG,它只会增长!谁能解释所有这些< null>这意味着什么?我只是想知道真相. (注意:我不得不用#替换<> brakets,因为SO引擎切断了整个事情,所以用你的想象来取代它们). 解决方法
类型不匹配会告诉您确切的问题:您可以转换为java.lang.Integer但不能转换为java.lang.Object.所以告诉它你想在整个过程中要求一个整数.例如:
groupOfObjects.map(_.getNeededInt: java.lang.Integer).map(libraryObject.libraryMethod(_)) (符号值:类型 – 在val或var或参数方法的声明之外使用时 – 意味着在可能的情况下将值视为该类型;值必须是Type的子类,或者需要一个隐式转换,可以将值转换为适当类型的值.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |