你可以通过实现这三个来让每个人都开心。例如:
data class User(val name: String)
fun userSequence(): Sequence<User> = TODO()
fun usersLazily(): Iterable<User> = userSequence().asIterable()
fun userStream(): Stream<User> = userSequence().asStream()
通过不users
为任何这些函数使用简单的名称,您可以让调用者多思考一下他们真正想要的名称:
- Kotlin 用户将使用
userSequence
.
- Java 1.6 和 1.7 用户将使用
usersLazily
.
- Java 1.8 用户将使用
userStream
.
userStream
必须在一个单独的 JAR 中定义,将 JDK 1.8 支持添加到您的 1.6/1.7 JAR(类似于org.jetbrains.kotlin:kotlin-stdlib-jre8
for 的方式org.jetbrains.kotlin:kotlin-stdlib
)。
话虽如此,我会质疑您是否真的需要维护 Java 1.6 或 1.7 支持。如果你发现你没有,那么你可以将userSequence
anduserStream
放入同一个 JAR 中,甚至不定义usersLazily
.