instantiate

fun Class<*>.instantiate(args: Args = args(), argTypes: ArgTypes = argTypes()): Any

创建实例(精确参数类型)。

val obj = clz.instantiate()
val obj = clz.instantiate(args("param1", 42), argTypes(String::class.java, Int::class.java))

不要使用 clz.newInstance() 的无参写法:Kotlin 重载解析会优先选 JDK Class.newInstance(), 与本扩展函数行为不同(不会 setAccessible、JDK 9+ 已 @Deprecated)。 使用 instantiate 可以避免这个陷阱。

Parameters

args

构造器参数值包装

argTypes

构造器参数类型;为空时会根据 args 自动推断