Kotlin: использование статических методов google-guava в качестве расширений

Можно ли использовать существующие java-статические методы в качестве расширений из окна?

Давайте рассмотрим com.google.common.collect.Iterables.transform . Теперь, поскольку я не знаю, как с этим бороться, использовать предложенный метод в качестве расширения, мне нужно написать что-то вроде:

 import com.google.common.collect.Iterables.transform public fun <F, T> Iterable<F>.transform(function: Function<in F, out T>) : Iterable<T> { return transform(this, function); } 

Итак, после этого я мог бы использовать его с итерабельными:

 Iterable<A> input; Function<A, B> function; Iterable<B> output = input.transform(function); 

Но я думаю, что декларирование самообслуживания не является необходимым. Как пропустить эту декларацию?


Обновить

Мой вопрос состоит из двух основных подтекстов:

  1. Можно ли импортировать существующие (статические) методы в качестве расширений?

    Нет, пока это невозможно.

  2. Как повторно использовать существующие Function guava s, например, для transform Iterable s?

    Вместо transform вы должны использовать расширение map , как это предлагается в ответах. Для повторного использования Function s можно использовать расширение следующим образом:

 public fun <T, R> Function<T, R>.asFun(): (T) -> R = { input -> apply(input) }; 

    Вы не должны приводить обходные пути Guava для Java в Котлин. Такой API уже является частью времени выполнения Kotlin. Поэтому вы можете написать:

     val input = listOf(1,2,4,8) val output = input.map { /*transform function*/ it + 1 } 

    http://kotlinlang.org/api/latest/jvm/stdlib/kotlin/map.html

    Все остальные, которые вы можете легко найти в предложениях IDE введите описание изображения здесь