Convert java.lang.String to Scala string

munk picture munk · May 22, 2014 · Viewed 9.5k times · Source

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

Answer

om-nom-nom picture om-nom-nom · May 22, 2014

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