我想用具体化类型作为扩展函数的功能,但我不认为这是可能的,因为在我检查生成的字节码后,我发现方法签名是私人的,任何解决方法使它公开?Kotlin作为函数扩展的函数类型函数 - 可从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
}
科特林字节码:
private final static startActivity(Landroid/content/Context;)V
@Lorg/jetbrains/annotations/NotNull;() // invisible, parameter 0
...
客户端代码:
科特林文件
override fun showMessageEmptyOfferFeeds() {
mOfferFeedsWarning.visible() // "visible()" extension func RESOLVED
}
的Java文件
showProfileDetailsUi(){
startActivity<DetailActivity>() //"startActivity()" extension func NOT RESOLVED
}
是的,它只是一个类的级别..但我不能用它在其中定义的文件的一面..我的问题是如何使用它作为正常的扩展功能? – Abdellah
尝试将其定义为最高级别。这是类似Extensions.kt的类,它可能只包含你的功能,没有围绕它的类 – s1m0nw1
我做了但不工作 – Abdellah