欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

kotlin 反射java类_关于Kotlin反射中实例化类的问题

发布时间:2025/4/5 编程问答 35 豆豆
生活随笔 收集整理的这篇文章主要介绍了 kotlin 反射java类_关于Kotlin反射中实例化类的问题 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

先上java代码:

public class TUtil {

public static T getT(Object o, int i) {

try {

return ((Class) ((ParameterizedType) (o.getClass()

.getGenericSuperclass())).getActualTypeArguments()[i])

.newInstance();

} catch (InstantiationException e) {

} catch (IllegalAccessException e) {

} catch (ClassCastException e) {

}

return null;

}

}

//调用者只需要:

public abstract class BaseMVPActivity

···省略代码····

mPresenter = TUtil.getT(this, 0);

mModel = TUtil.getT(this, 1);

···省略代码····

我尝试使用kotlin去写这个util类:

class KClassUtil {

companion object {

inline fun getKType(K: Any,position:Int):T {

var parameterizedType = K::class.java.genericSuperclass as ParameterizedType

var actualTypeArguments = parameterizedType.actualTypeArguments

return ( actualTypeArguments[position].javaClass as Class).newInstance()

}

}

}

//调用者只需要:

abstract class BaseMVPActivity, E : BaseModel> : BaseActivity()

···省略代码····

mPresenter = KClassUtil.getKType(this, 0) //这里报错了

mModel = KClassUtil.getKType(this, 1) //这里报错了

···省略代码····

Cannot use 'T' as reified type parameter. Use a class instead.

这里kotlin中一定要我写入具体的Class,但由于这里是抽象类无法知道具体的class是什么,请问如何解决这个问题?

总结

以上是生活随笔为你收集整理的kotlin 反射java类_关于Kotlin反射中实例化类的问题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。