2015-11-15 10 views
12

私はobjectの機能を "static imports"(Kotlinのインポートオンデマンド)を通じて呼び出せるライブラリを作成しようとしています。残念ながら、Kotlinには以下のような制限があるようです。Kotlin:オブジェクトからオンデマンドでインポートできません

enter image description here

なぜこれが限界でしょうか?私はそれを回避するために何ができますか? (コンパニオンオブジェクトでクラスを使用しようとしましたが、その場合でも関数は解決しません)

答えて

6

私はそれが正しいと理解すれば、SparkotはあなたのKotlinクラスです。 オブジェクトはスーパータイプから継承することがあります。 equals(),hashCode()は、*オブジェクトからインポートするたびにインポートされ、これが混乱する可能性があるとの判断が下されました。

* - インポートはJavaオブジェクトでのみ機能します。

+0

「Sparkot」は、シングルトンクラスのKotlinオブジェクトです。 – Jire

+2

まあ、Kotlinは、オブジェクトの個々のメンバーだけを* -importではなく名前でインポートすることをサポートしています。 IDEはそれを支援します。 –

+1

少なくともこの決定の背後にある考え方を聞くことは有益ですが、この制限が私がKotlin変換をJavaに変換し直すことをやめた理由です。 KotlinはIntelliJの言語プラグインを作成するのに役立つ言語として提供されていますが、これはそうですが、これは確かにそうではありません。 IElementType-holderクラスを使用する人は、そのシンボルを大量に使用する場所や、競合がない場所でシンボルをすべてインポートしたいと考えています。 ... – naki