是否有一个隐式方法将scala.collection.mutable.StringBuilder转换为java.lang.StringBuilder?
我正在使用Java库(JCommander)中的一种方法(usage
拿一个 java.jang.StringBuilder
论据。
是否有一个隐式方法将scala.collection.mutable.StringBuilder转换为java.lang.StringBuilder?
我正在使用Java库(JCommander)中的一种方法(usage
拿一个 java.jang.StringBuilder
论据。
你不能 开始 用Scala StringBuilder
然后获取Java版本。但是,你可以包装一个 java.lang.StringBuilder
在Scala版本中。所以:
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
因为 - 不是保证,但现在在实践中是真的(2.8,2.9) - Scala包装器不存储任何状态(而只是指Java版本),你可以安全地混合使用二。
看一下源代码,似乎绝对没有办法得到一个 java.lang.StringBuilder
从一个 scala.collection.mutable.StringBuilder
。
你可以创建一个新的 java.lang.StringBuilder
与Scala一起,经历某种类型的转换(String
要么 CharSequence
)。
使用此隐式转换执行此操作:
implicit def b2b(b: scala.collection.mutable.StringBuilder) =
new java.lang.StringBuilder(b)
你不能 开始 用Scala StringBuilder
然后获取Java版本。但是,你可以包装一个 java.lang.StringBuilder
在Scala版本中。所以:
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
因为 - 不是保证,但现在在实践中是真的(2.8,2.9) - Scala包装器不存储任何状态(而只是指Java版本),你可以安全地混合使用二。
看一下源代码,似乎绝对没有办法得到一个 java.lang.StringBuilder
从一个 scala.collection.mutable.StringBuilder
。
你可以创建一个新的 java.lang.StringBuilder
与Scala一起,经历某种类型的转换(String
要么 CharSequence
)。
使用此隐式转换执行此操作:
implicit def b2b(b: scala.collection.mutable.StringBuilder) =
new java.lang.StringBuilder(b)