Na przykład mam klasy Java (od zewnętrznej biblioteki):Czy jest możliwe dodanie "statycznej" funkcji rozszerzenia dla klasy Java?
class A {} // This is Java class
chcę dodać funkcje rozszerzeń napisanych na Kotlin i nazwać jak:
A.foo() // This is call of extension function `foo` from Kotlin code
Jak rozumiem, teraz jest niemożliwe do wykonania w Kotlin, ponieważ obsługuje on "statyczne" funkcje rozszerzenia tylko dla KClass-es with companion object. Dobrze?
Wydaje się, że nic nie stoi na przeszkodzie, aby wdrożyć taką funkcjonalność w Klininie później. Dobrze?
Dlaczego tego potrzebujesz? Możesz po prostu zdefiniować zwykłą funkcję w pakiecie, aby uzyskać ten sam efekt, z tą różnicą, że nie musisz używać nazwy klasy ze składnią kropkową, aby ją wywołać. Jeśli spodziewasz się użyć refleksji, aby znaleźć metodę statyczną w jakiejś klasie, to jest inna historia ... –
Po prostu chcę użyć składni 'A.foo()' zamiast 'foo (A)' ponieważ Kotlin promuje takie składnia dla rozszerzenia funkcjonalności klas (patrz pierwszy akapit [tutaj] (https://kotlinlang.org/docs/reference/extensions.html#extensions)). –
Po prawej, funkcje rozszerzeń i właściwości dotyczą * wystąpień * klas. Nie masz tutaj instancji, tylko wywołanie funkcji. –