reified 关键字在 Kotlin 中是如何工作的?

“reified”是一种特殊类型的关键字,可帮助 Kotlin 开发人员在运行时访问与类相关的信息。“reified”只能与内联函数一起使用。当使用“reified”关键字时,编译器将函数的字节码复制到调用函数的代码的每个部分。这样,泛型类型 T 将被分配给它作为参数获得的值的类型。

示例

在这个例子中,我们将看到“reified”如何有助于重用我们的代码并使用相同的函数来执行类似类型的操作,而不管其传递参数如何。

对于这个例子,我们创建了一个内联函数,我们传递了一个通用的“具体化”参数 T,并且从main()Kotlin 中,我们myExample()使用不同的参数多次调用。

//声明内联函数
inline fun <reified T> myExample(name: T) {
   println("\nName of your website -> "+name)
   println("\nType of myClass: ${T::class.java}")
}

fun main() {

   //用字符串调用 func()
   myExample<String>("www.nhooo.com")

   //使用 Int 值调用 func()
   myExample<Int>(100)

   //调用具有 Long 值的 func()
   myExample<Long>(1L)

}
输出结果

它将生成以下输出 -

Name of your website -> www.nhooo.com

Type of myClass: class java.lang.String

Name of your website -> 100

Type of myClass: class java.lang.Integer

Name of your website -> 1

Type of myClass: class java.lang.Long