2015-02-03 3 views
1

Я переношу некоторый код Java в Kotlin, и у меня возникли проблемы с переносом вызова на конструктор String Java (char[], int, int), поскольку он недоступен в Kotlin.Как вызвать конструктор String Java (char [], int offset, int length) из Kotlin?

Только (char[]) Конструктор, похоже, доступен. Как мне это преодолеть?

P.S. Я преодолеваю это, написав: (java.lang.String(buf, 0, i) as String) и кажется, что java.lang.String и kotlin.String разные. Но это выглядит не так хорошо.

+1

Не являясь разработчиком Котлин, может ваш написать свой собственный метод (в Java), который просто вызывает конструктор строку, а затем вызвать, что из вашего кода Котлин? –

+0

@JonSkeet Это возможно, но я хотел иметь все коды в Kotlin (не смешанные с Java). – yuku

+0

В этом случае вы можете просто создать копию соответствующего «среза» массива? –

ответ

1

Если у вас есть массив символов исходя из Java, например

public class Test { 
    public static char[] chars = {'a','b','c','d'}; 
} 

И вы хотите использовать конструктор в формате (char[], int, int)

Тогда вы могли бы сделать это таким образом.

var a = Test.chars.slice(0..i).toString() 

Это займет ваш массив символов, разрежьте его в диапазоне от 0 до i, затем получите его как строку.

Затем можно просто обернуть, что в функции и прочь вы идете

0

Вы можете только прямое использование конструктора. Это справедливо в Котлин:

val s = String(byteArrayOf(65,66,67,68,69), 0, 3)