2015-11-15 13 views
12

Sto tentando di creare una libreria in cui è possibile chiamare le funzioni di un object tramite "importazioni statiche" (import-on-demand in Kotlin). Sfortunatamente Kotlin sembra avere una limitazione come visto sotto.Kotlin: impossibile importare su richiesta dall'oggetto

enter image description here

Perché questo è un limite? C'è qualcosa che posso fare per aggirarlo? (Ho provato a usare una classe con un oggetto compagno e in tal caso le funzioni non si risolvono nemmeno.)

risposta

6

Sparkot è la tua classe Kotlin, se capisco che è giusto. Gli oggetti possono ereditare cose da supertipi, ad es. equals(), hashCode() verranno importati ogni volta che si importa * da un oggetto e si è deciso che ciò sarebbe troppo confuso.

* - le importazioni funzionano solo con l'oggetto Java.

+0

'Sparkot' è un oggetto Kotlin, una classe singleton. – Jire

+2

Bene, Kotlin supporta l'importazione solo di singoli membri di oggetti per nome, non un * -import. L'IDE ci aiuta. –

+1

È utile ascoltare almeno il pensiero alla base di questa decisione, ma questa limitazione è la ragione per cui ho deciso di non convertire una conversione Kotlin in Java. Kotlin è presentato come un linguaggio che aiuterebbe nella creazione di un plug-in di lingua per IntelliJ - e lo fa - ma questo è un posto dove sicuramente non lo è. Quasi tutti coloro che utilizzano una classe IElementType-holder Vogliono importare tutti i suoi simboli in luoghi che lo usano pesantemente e per i quali non ci sono conflitti (se valutano di vivere senza dolore al tunnel carpale, cioè). ... – naki

Problemi correlati