kotlin reified函数封装activity跳转

通常启动一个activity:

 val intent = Intent(MainActivity@this, javaClass<DetailActivity>())
    intent.putExtra(DetailActivity.ID, it.id)
    intent.putExtra(DetailActivity.CITY_NAME, result.city)
    startActivity(intent)

Anko提供了简单得多的方式通过reified function来启动一个activity:

startActivity<DetailActivity>(DetailActivity.ID to it.id,
            DetailActivity.CITY_NAME to result.city)

在Kotlin中,一个内联(inline)函数可以被具体化(reified),这意味着我们可以在函数中得到并使用范型类型的Class。

我们也可以像Anko一样封装跳转:

inline fun <reified T : Activity> Context.startActivity(data: Bundle? = null) {
    val intent = Intent(this, T::class.java)
    if (data != null) {
        intent.putExtras(data)
    }
    this.startActivity(intent)
}

Reified 泛型方法是指,在 Kotlin 中使用特殊类型参数的方法参数在编译时,会被替换为限制于activity的子类,使Java 代码可以调用带有类型约束的 Kotlin 方法。

猜你喜欢

转载自blog.csdn.net/weixin_53545232/article/details/136159262