На ваш вопрос:
Как передать функцию в качестве параметра?Я просто хочу выполнить parseFiles (файл) для каждой итерации
Вы можете просто заменить:
.forEach { parseFiles(it) }
на:
.forEach(::parseFiles)
Что представляет собой ссылку, вы передаете имя функции, которая может позаботиться о типе параметра, который будет выдан forEach
.
Но исключение, которое вы получаете, связано с чем-то другим.Я думаю, что это связано с версией вашего окончательного байт-кода.Я тестировал ваш код в среде, используя
sourceCompatibility JavaVersion.VERSION_1_8
и
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
, поэтому в java 8 у вас есть доступ к default
методам на интерфейсах, Kotlin имеет это по умолчанию, но если выориентированы на Java 7, вероятно, у вас нет доступа к этому.Это мое предположение.