J'essaie d'utiliser une fonction avec le type réifié comme fonction d'extension mais je ne pense pas que ce soit possible car après avoir vérifié le bytecode généré, j'ai trouvé que la signature de la méthode est privée.Kotlin réifiée type fonction comme extension de fonction - Appelable à partir de Java?
CommonExtensions.kt
inline fun<reified T: Activity> Context.startActivity() {
val intent = Intent(this, T:: class.java)
startActivity(intent)
}
fun View.visible() {
visibility = View.VISIBLE
}
Kotlin bytecode:
private final static startActivity(Landroid/content/Context;)V
@Lorg/jetbrains/annotations/NotNull;() // invisible, parameter 0
...
Code client:
fichier Kotlin
override fun showMessageEmptyOfferFeeds() {
mOfferFeedsWarning.visible() // "visible()" extension func RESOLVED
}
fichier Java
showProfileDetailsUi(){
startActivity<DetailActivity>() //"startActivity()" extension func NOT RESOLVED
}
Oui c'est seulement un niveau de classe .. mais je ne peux pas l'utiliser à côté du fichier dans lequel il est défini .. ma question est de savoir comment l'utiliser comme des fonctions d'extension normales? – Abdellah
Essayez de définir le niveau supérieur. C'est une classe comme Extensions.kt qui pourrait contenir votre fonction seulement, sans classe autour de lui – s1m0nw1
Je l'ai fait mais ne fonctionne pas – Abdellah