:class.java.newInstance() 已被弃用。

3
inline fun <reified T> blah(block: T.() -> Unit): Something {
    request = T::class.java.newInstance()

newInstance()方法已被弃用,通常在查看源代码时会解释为什么它被弃用以及替代方案是什么,但这一次我只看到:

/** @deprecated */
@CallerSensitive
@Deprecated(
    since = "9"
)
public T newInstance() throws InstantiationException, IllegalAccessException {
    // ...
}

什么是在 Kotlin 中创建实例化可具体化类型的新非废弃方法?
更新:如请求的更多信息:
JDK Version: 11 (not Android, just pure JVM)
Kotlin Version:1.3.61 

废弃的原因在这里 - Eugene
1个回答

3

实际上这源自于Java本身。适当的替代方法是:

T::class.java.getDeclaredConstructor().newInstance()

您还可以查看Class.newInstance()-Javadoc,该文档也说明了这一点。


1
"getDeclaredConstructor"(注意缺少"s")应该可以工作...它接受可变数量的参数类型... - Roland

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接