简体   繁体   中英

Convert java.lang.String to Scala string

I have a String in my Scala program that I'd like to cast as an Int.

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

The problem is that x.getTheNumericString() comes from a Java library and returns a java.lang.String , which doesn't have a toInt method.

I know I can create a Scala string with val s: String = "123" , but I noticed that when I create a string like val t = "456" I get a java.lang.String . I have heard that Scala String is just a wrapper around java.lang.String , but I haven't found any clear documentation on how to cast to the Scala string.

Is there some function I can use like:

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

As it stands now, my compiler complains about the original definition value toInt is not a member of String

It's not a wrapper, but actually java.lang.String. No need in additional hassle:

» 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

用Scala特定的字符串方法隐式修改了java.lang.String ,因此不需要手动转换。

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM