Есть ли неявный метод для преобразования scala.collection.mutable.StringBuilder в java.lang.StringBuilder?
Я использую библиотеку Java (JCommander), в которой один из методов (usage) принимает аргумент java.jang.StringBuilder.
Ответ 1
Вы не можете начать с 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), вы можете смешать и сопоставить использование этих двух.
Ответ 2
Глядя на исходный код, кажется, нет абсолютно никакого способа получить java.lang.StringBuilder от scala.collection.mutable.StringBuilder.
Вы можете создать новый java.lang.StringBuilder с Scala, перейдя через преобразование некоторого типа (String или CharSequence).
Ответ 3
Используйте это неявное преобразование:
implicit def b2b(b: scala.collection.mutable.StringBuilder) =
new java.lang.StringBuilder(b)