Lorsque vous ciblez Java interop, quel type utiliser pour une collection paresseuse?Kotlin, ciblant Java interop: type idiomatique pour collection paresseuse?
Sequence<T>
fait le plus de sens pour les appels Kotlin en raison de fonctions d'extension sur elle être paresseux par défaut, mais les forces Java appelants à traiter avec le type d'un Kotlin et convertir la séquence iterator manuellement (séquence ne dépasse pas itérables!)Iterable<T>
est logique pour Java appelants en raison de l'utilisation implicite pour les boucles, mais provoquera des appelants Kotlin sans méfiance de laisser tomber accidentellement la paresse due à l'extension non paresseux fonctionsStream<T>
est optimale pour les appelants Java et Kotlin mais peuvent avoir les frais généraux et est Java 8+ (Kotlin cible 6+)
Peut-être pouvez-vous utiliser itérable avec 'someIterable.asSequence()' dans Kotlin? –
Ce monde fonctionne, mais laisse - comme indiqué - la possibilité qu'un visiteur * sans méfiance * tombe accidentellement la paresse. Cette question est plus en direction du développement de la bibliothèque. –