2015-11-15 7 views
12

Próbuję utworzyć bibliotekę, w której można wywoływać funkcje object poprzez "statyczne importowanie" (import-on-demand w Kotlin). Niestety Kotlin wydaje się mieć ograniczenia, jak widać poniżej.Kotlin: Nie można importować na żądanie z obiektu

enter image description here

Dlaczego jest to ograniczenie? Czy jest coś, co mogę zrobić, żeby to obejść? (Próbowałem użyć klasy z obiektem towarzyszącym iw takim przypadku funkcje nawet nie rozwiązują.)

Odpowiedz

6

Sparkot to twoja klasa Kotlin, jeśli rozumiem, że to prawda. Obiekty mogą dziedziczyć rzeczy z supertypes, np. equals(), , hashCode() zostanie zaimportowany za każdym razem, gdy importujesz obiekt z obiektu i podjęto decyzję, że będzie to zbyt mylące.

* - importowanie działa tylko z obiektem Java.

+0

'Sparkot' to obiekt Kotlin, klasa singleton. – Jire

+2

No cóż, Kotlin obsługuje importowanie tylko poszczególnych elementów obiektów po nazwie, a nie * -import. IDE pomaga w tym. –

+1

To pomocne, aby przynajmniej usłyszeć myśl związaną z tą decyzją, ale to ograniczenie jest powodem, dla którego zdecydowałem się odłączyć konwersję Kotlin z powrotem na Javę. Kotlin jest przedstawiany jako język, który pomógłby stworzyć wtyczkę językową dla IntelliJ - i tak jest - ale jest to jedno miejsce, z którego na pewno nie. Prawie każda osoba korzystająca z klasy IElementType-WILL będzie chciała importować wszystkie swoje symbole w miejscach, które go intensywnie używają i dla których nie ma konfliktów (jeśli cenią sobie życie bez bólu w ciele nadgarstka). ... – naki