我想用具體化類型作爲擴展函數的功能,但我不認爲這是可能的,因爲在我檢查生成的字節碼後,我發現方法簽名是私人的,任何解決方法使它公開?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