我读到的所有关于类型具体化的教程都说我们在使用“具体化”时需要使用“内联”,但没有一个解释原因。
假设我有一个函数:
inline fun <reified T> doSomething(value: T) {
println("Doing something with type: ${T::class.simpleName}")
}
Run Code Online (Sandbox Code Playgroud)
据我了解,使用“具体化”可以防止类型擦除。那么为什么我们不能在普通的非内联函数中使用它呢?使用内联将使编译器在调用站点复制上述函数的主体。但为什么我们需要这样的事情发生呢?
generics inline type-erasure kotlin kotlin-reified-type-parameters