Per esempio io ho classe Java (da libreria esterna):È possibile aggiungere la funzione di estensione "statica" per la classe Java?
class A {} // This is Java class
voglio aggiungere funzioni di estensione scritti su Kotlin e chiamarlo come:
A.foo() // This is call of extension function `foo` from Kotlin code
quanto ho capito, adesso è impossibile da fare in Kotlin perché supporta le funzioni di estensione "statiche" solo per KClass-es with companion object. Destra?
Sembra che nulla impedisca di implementare tale funzionalità in Kotlin in seguito. Destra?
Perché ne hai bisogno? Si potrebbe semplicemente definire una funzione regolare in un pacchetto per ottenere lo stesso effetto, tranne che non si deve usare un nome di classe con sintassi del punto per chiamarlo. Se ti aspetti di usare il reflection per trovare il metodo statico in qualche classe, questa è una storia diversa ... –
Voglio solo usare la sintassi 'A.foo()' invece di 'foo (A)' perché Kotlin promuove tale sintassi per estendere la funzionalità delle classi (vedere il primo paragrafo [qui] (https://kotlinlang.org/docs/reference/extensions.html#extensions)). –
A destra, le funzioni di estensione e le proprietà sono per * istanze * di classi. Non hai un'istanza qui, solo una chiamata di funzione. –