你可以讓每個人都高興通過實現三個。例如: -
data class User(val name: String)
fun userSequence(): Sequence<User> = TODO()
fun usersLazily(): Iterable<User> = userSequence().asIterable()
fun userStream(): Stream<User> = userSequence().asStream()
由於不使用一個簡單的名稱,如users
任何這些功能你讓來電者認爲只是其中一個他們真的需要一點額外的:
- 科特林用戶會使用
userSequence
。
- Java 1.6和1.7用戶將使用
usersLazily
。
- Java 1.8用戶將使用
userStream
。
userStream
將在一個單獨的JAR添加到您的1.6/1.7 JAR JDK 1.8的支持(類似於org.jetbrains.kotlin:kotlin-stdlib-jre8
怎麼做的org.jetbrains.kotlin:kotlin-stdlib
)來定義。
雖這麼說,我會質疑你是否真的需要維護Java 1.6或1.7的支持。如果你發現你沒有,那麼你可以把userSequence
和userStream
到同一個JAR,甚至沒有定義usersLazily
。
可能是你可以在'科特林()使用迭代用'someIterable.asSequence? –
這個世界的工作,但如所述的那樣,留下了一個毫無防備的致電者意外地降低懶惰的可能性。這個問題更多的是方向圖書館的發展。 –