Scala StringBuilder - PullRequest
       7

Scala StringBuilder

11 голосов
/ 01 июня 2011

Есть ли неявный метод для преобразования scala.collection.mutable.StringBuilder в java.lang.StringBuilder?

Я использую библиотеку Java (JCommander), в которой один из методов (usage)принимает аргумент java.jang.StringBuilder.

Ответы [ 3 ]

9 голосов
/ 01 июня 2011

Вы не можете запустить со 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), вы можете смешивать и сопоставлять использование двух.

4 голосов
/ 01 июня 2011

Глядя на исходный код, кажется, что нет абсолютно никакого способа получить java.lang.StringBuilder от scala.collection.mutable.StringBuilder.

Вы можете создать новый java.lang.StringBuilder с помощью Scala, проводя преобразование некоторого типа (String или CharSequence).

1 голос
/ 01 июня 2011

Используйте это неявное преобразование, сделайте следующее:

    implicit def b2b(b: scala.collection.mutable.StringBuilder) = 
        new java.lang.StringBuilder(b)
...