将java.lang.String转换为Scala字符串

时间:2014-05-22 14:52:44

标签: java string scala scala-java-interop

我的Scala程序中有一个String,我想把它作为Int。

def foo(): Int = x.getTheNumericString().toInt

问题是x.getTheNumericString()来自Java库并返回java.lang.String,它没有toInt方法。

我知道我可以用val s: String = "123"创建一个Scala字符串,但我注意到当我创建一个像val t = "456"这样的字符串时,我得到一个java.lang.StringI have heard that Scala String is just a wrapper around java.lang.String,但我还没有找到关于如何投射到Scala字符串的明确文档。

是否有一些我可以使用的功能:

def foo(): Int = f(x.getTheNumericString()).toInt

现在,我的编译器抱怨原始定义value toInt is not a member of String

3 个答案:

答案 0 :(得分:9)

它不是一个包装器,但实际上是java.lang.String。不需要额外的麻烦:

» touch 123
» scala
...

val foo = new java.io.File("123")
// java.io.File = 123

// Get name is a java api, which returns Java string

foo.getName.toInt
// res2: Int = 123

答案 1 :(得分:2)

使用Scala特定的字符串方法隐式修改了

java.lang.String,因此不需要手动转换。

答案 2 :(得分:0)

使用asInstanceOf [String]从语法上将Java字符串转换为Scala字符串。

val str: String = "java_string".asInstanceOf[String]