2017-03-09 17 views
5

Trong stdlib/kotlin.io chúng tôi tìmSử dụng với Tự động đóng trong Kotlin

inline fun <T : Closeable?, R> T.use(block: (T) -> R): R (source) 

Tuy nhiên nó được thực hiện trên có thể đóng và không phải trên superinterface AutoCloseable. Khi làm việc với một số khung công tác sử dụng AutoCloseable, điều này có thể là một chút đau đớn.

Tại sao Kotlin không hỗ trợ "sử dụng" với AutoCloseble?

Trả lời

6

kotlin-stdlib có nghĩa là để sử dụng với JDK 6 trở lên, sao cho nó không nhận biết được AutoCloseable (chỉ được thêm vào trong Java 7).

Nhưng bạn có thể tìm thấy hàm bạn cần trong kotlin-stdlib-jre7, phần mở rộng stdlib cho JDK 7 được thêm cho Kotlin 1.1. Bạn có thể thay thế phụ thuộc kotlin-stdlib với nó vì nó phụ thuộc vào chính cơ sở stdlib.

Nó được định nghĩa như sau:

public inline fun <T : AutoCloseable?, R> T.use(block: (T) -> R): R { ... } 

(api reference)(github source)

Và nó lần đầu tiên được đề cập trong this blog post.

+0

Lý do chính đáng để nâng cấp lên 1.1 sau đó :). Cảm ơn nhiều ! –

Các vấn đề liên quan