2015-09-16 39 views
5

Có vẻ như tôi không thể sử dụng tham chiếu phương thức của một đối tượng trong Kotlin. Tính năng này tồn tại trong Java.Kotlin: Phương pháp tham chiếu không hoạt động?

Ví dụ trong Java nếu tôi được vòng lặp thông qua một chuỗi để nối thêm mỗi nhân vật để một nhà văn:

string.forEach(writer::append);

Nhưng trong Kotlin sử dụng cú pháp tương tự không làm việc vì:

enter image description here

+2

Đó là các ngôn ngữ riêng biệt. Tại sao bạn mong đợi một tính năng trong một để tự động làm việc trong một tính năng khác? – yshavit

+0

Tôi nghĩ rằng họ đã thêm các tham chiếu phương pháp thích hợp cách đây vài tháng. Đó là một tính năng cần thiết để tiết kiệm boilerplate và đó là những gì Kotlin là về. – Jire

+2

Họ có thể có, tôi không thực sự biết Kotlin. Nhưng tôi không hiểu kết nối với Java, vì câu hỏi này hoàn toàn về Kotlin. Bạn đã kiểm tra các tài liệu [về tham chiếu hàm] (http://kotlinlang.org/docs/reference/reflection.html#function-references) chưa? – yshavit

Trả lời

11

Hiện tại, Kotlin chỉ hỗ trợ các tham chiếu đến các hàm và các thành viên cấp cao nhất và địa phương của các lớp , chứ không phải insta riêng lẻ nces. Xem tài liệu here.

Vì vậy, bạn có thể nói Writer::append và có được một chức năng Writer.(Char) -> Writer, nhưng lấy một ví dụ writer và nói writer::append để có được một hàm (Char) -> Writer không được hỗ trợ vào lúc này.

+1

Cảm ơn! Có kế hoạch để thêm các tính năng trong một phiên bản Kotlin trong tương lai? – Jire

+1

https://youtrack.jetbrains.com/issue/KT-6947 – D3xter

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