Scala StringBuilder

Есть ли неявный метод для преобразования 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)