Ошибка Kotlin при преобразовании из Java-кода

У меня есть класс ArraysHelper, который выглядит так на Java:

public class ArraysHelper<T> { public final Iterable<T> iterable; private ArraysHelper(Iterable<T> iterable) { this.iterable = iterable; } public static <T> T[] concat(T[] array, @Nullable T element) { T[] result = Arrays.copyOf(array, array.length + 1); result[array.length] = element; return result; } public final ArraysHelper<T> filter(Prediction<T> prediction) { return from(filter(iterable, prediction)); } private static <T> List<T> filter(Iterable<T> iterable, Prediction<T> predicate) { ArrayList<T> list = new ArrayList<>(); for (T object : iterable) { if (predicate.apply(object)) { list.add(object); } } return list; } public final List<T> toList() { List<T> list = new ArrayList<>(); for (T item : iterable) { list.add(item); } return list; } public static <T> ArraysHelper<T> from(final Iterable<T> iterable) { return new ArraysHelper<>(iterable); } } 

Я преобразовал его в Котлин следующим образом:

 class ArraysHelper<T> private constructor(val iterable: Iterable<T>) { fun filter(prediction: Prediction<T>): ArraysHelper<T> { return from(filter(iterable, prediction)) } fun toList(): ArrayList<T> { val list = ArrayList<T>() for (item in iterable) { list.add(item) } return list } companion object { fun <T> concat(array: Array<T>, element: T?): Array<T> { val result = Arrays.copyOf(array, array.size + 1) result[array.size] = element return result } private fun <T> filter(iterable: Iterable<T>, predicate: Prediction<T>): ArrayList<T> { val list = ArrayList<T>() for (`object` in iterable) { if (predicate.apply(`object`)) { list.add(`object`) } } return list } fun <T> from(iterable: Iterable<T>): ArraysHelper<T> { return ArraysHelper(iterable) } } } 

Я также преобразовал один интерфейс, который я использую. В java:

 public interface Prediction<T> { boolean apply(@Nullable T input); @Override boolean equals(@Nullable Object object); } 

В Котлине:

 interface Prediction<T> { fun apply(input: T?): Boolean override fun equals(`object`: Any?): Boolean } 

Теперь я хочу использовать их здесь:

  val rssiEvents = locationRSSIEvents if (rssiEvents.isNotEmpty()) { val latestRSSIEvent = rssiEvents.last() val cleanedGeoEvents = ArraysHelper.from<LocationGeoEvent>(locationGeoEvents).filter(object : Prediction<LocationGeoEvent> { override fun apply(input: LocationGeoEvent): Boolean { return Math.abs(input.timestamp - latestRSSIEvent.timestamp) < maxTimeDifferenceSeconds * 1000 } }).toList() } 

Но в среде IDE (Android Studio 3.0) подчеркивается метод фильтрации:

 object : Prediction<LocationGeoEvent> 

и он говорит:

 Required: Prediction<LocationGeoEvent> Found: 

Так что с тобой не так?

ОБНОВИТЬ:

Конечно, в Котлине я могу сделать что-то вроде этого:

  val cleanedGeoEvents = locationGeoEvents .filter { locationGeoEvent -> Math.abs(locationGeoEvent.timestamp - latestRSSIEvent.timestamp) < maxTimeDifferenceSeconds * 1000 } .toList() 

Но все же, будет полезно, что именно не так с этой предыдущей версией