Scala StringBuilder
Is there an implicit method to conv开发者_如何学Cert scala.collection.mutable.StringBuilder to java.lang.StringBuilder?
I am using a Java library (JCommander) in which one of the methods (usage
) takes a java.jang.StringBuilder
argument.
You can't start with a Scala StringBuilder
and then obtain the Java version. You can, however, wrap a java.lang.StringBuilder
in the Scala version. So:
val jsb = new java.lang.StringBuilder();
val sb = new StringBuilder(jsb);
// Do Scala-y stuff with sb
JCommander.whatever.usage(jsb);
// Do more Scala-y stuff
Since--not a guarantee, but true in practice right now (2.8, 2.9)--the Scala wrapper doesn't store any state (instead just referring to the Java version), you're safe to mix and match usage of the two.
Looking at the source code, it seems there's absolutely no way to get a java.lang.StringBuilder
from a scala.collection.mutable.StringBuilder
.
You can create a new java.lang.StringBuilder
with Scala's, going through a conversion of some type (String
or CharSequence
).
Use this implicit transform do do this:
implicit def b2b(b: scala.collection.mutable.StringBuilder) =
new java.lang.StringBuilder(b)
精彩评论