reified 的工作原理
inline 函数会在调用处展开,泛型类型被具体类型替换
inline fun <reified T> createInstance(): T {
return T::class.java.newInstance() as T
}
val str: String = createInstance<String>()
val list: ArrayList<Int> = createInstance<ArrayList<Int>>()
编译后(Java示意代码):
String str = (String) String.class.newInstance();
ArrayList list = (ArrayList) ArrayList.class.newInstance();