天问Lv0 2018-02-07 01:38 采纳率: 50%
浏览 2125
已结题

Android Kotlin反射获取属性列表出现的TypeNotPresentException问题

本人刚开始使用Kotlin的菜鸟一枚,请教以下问题

Android中使用Kotlin的反射,用来获取一个Activity或任意类中的属性信息,使用方式是obj::class.declaredMemberProperties,obj是一个Activity。结果在运行时发生以下错误

Caused by: java.lang.TypeNotPresentException: Type android/support/v4/app/ActivityCompat$SharedElementCallback23Impl not present at java.lang.Class.getDeclaredClasses(Native Method) at java.lang.Class.getDeclaredClasses(Class.java:534) at kotlin.reflect.jvm.internal.structure.ReflectJavaClass.getInnerClassNames(ReflectJavaClass.kt:35)....

根据错误SharedElementCallback23Impl知道是没有对应的类,尝试使用6.0(23)以上版本运行,运行正常。可以知道是因为kotlin在低版本运行时乃然按照开发时最高版本进行各属性获取导致的错误,但不知道怎样避免。已知可以使用obj.javaClass.declaredFields来获取,没有问题,但是用上面的方式应该如何进行,请大神指点。

  • 写回答

2条回答 默认 最新

  • threenewbee 2018-02-07 15:49
    关注

    缺少jar包,或者你的类明写错了,或者jar版本不兼容。

    评论

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿