2015-11-15 24 views
12

Tôi đang cố gắng tạo một thư viện nơi bạn có thể gọi các chức năng của object thông qua "nhập tĩnh" (nhập theo yêu cầu trong Kotlin). Thật không may Kotlin dường như có một giới hạn như bên dưới.Kotlin: Không thể nhập theo yêu cầu từ đối tượng

enter image description here

Tại sao đây là giới hạn? Tôi có thể làm gì để vượt qua nó? (Tôi đã thử sử dụng một lớp với một đối tượng đồng hành và trong trường hợp đó các hàm thậm chí không giải quyết được.)

Trả lời

6

Sparkot là lớp Kotlin của bạn, nếu tôi hiểu nó đúng. Đối tượng có thể kế thừa từ supertypes, ví dụ: equals(), hashCode() sẽ được nhập mỗi lần bạn nhập khẩu một đối tượng, và quyết định được đưa ra rằng điều này sẽ quá khó hiểu.

* - nhập chỉ hoạt động với đối tượng Java.

+0

'Sparkot' là một đối tượng Kotlin, một lớp singleton. – Jire

+2

Vâng, Kotlin chỉ hỗ trợ nhập các thành viên riêng lẻ của các đối tượng theo tên chứ không phải là * -import. IDE giúp với nó. –

+1

Thật hữu ích khi ít nhất nghe được suy nghĩ đằng sau quyết định này, nhưng giới hạn này là lý do tôi đã quyết định hủy chuyển đổi Kotlin về Java. Kotlin được trình bày như một ngôn ngữ có thể giúp đỡ trong việc tạo ra một plugin ngôn ngữ cho IntelliJ - và nó có - nhưng đây là một nơi mà nó chắc chắn không. Chỉ cần về bất cứ ai sử dụng một lớp IElementType-chủ S W muốn nhập khẩu tất cả các biểu tượng của nó ở những nơi mà sử dụng nó rất nhiều và không có xung đột (nếu họ có giá trị sống mà không có đau đường hầm cổ tay, đó là). ... – naki

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