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

本人刚开始使用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来获取,没有问题,但是用上面的方式应该如何进行,请大神指点。

0

2个回答

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

0

类型不存在异常。当应用试图以某个类型名称的字符串表达方式访问该类型,但是根据给定的名称又找不到该类型是抛出该异常。该异常与ClassNotFoundException的区别在于该异常是unchecked(不被检查)异常,而ClassNotFoundException是checked(被检查)异常。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Kotlin进阶之反射
Reflection 反射是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。Kotlin使函数和属性成为语言中头等公民,且以近似函数式或响应式方式内省属性和函数(如运行时属性名或类型;函数名或类型) 在Java平台上,需要使用反射特性的运行时组件为独立的JAR文件(kotlin-reflect.jar),目的是降低不需要使用反射的应用包的大小。如
反射获取注解的信息,反射获取类的属性
注解: public @interface Table { java.lang.String name() default ""; java.lang.String catalog() default ""; java.lang.String schema() default ""; javax.persistence.UniqueConstr...
懒人的智慧,反射设置该类的所有属性,高效工作
[code="java"] package com.proxy.test; import java.lang.reflect.Method; import com.anxin.trafficfine.session.proxy.CreateOrderRequest; /** * @author: (le.qiao) * @e-mail: qiaolevip@gmail....
Maven编译中的一些坑
错误1:invalid LOC header       这个错误比较好解决,jar下载不完全,去到相应的Maven包目录,把东西删掉重新编译就行。              错误2: java.lang.TypeNotPresentException: Type org/powermock/modules/junit4/PowerMockRunner not present     这种
Android Kotlin的Class、反射、泛型
前言 最近在学习kotlin的反射的时候遇到了一些问题,特地记录一下。 正题 在Java中使用Class很常见的就是,xxx类.class,比如我们在startActivity的时候startActivity(new Intent(this, OtherActivity.class)); 这里接收的就是CLass 1、Class c = person.getClass(); //对象获...
Kotlin/Java中的反射详解
什么是反射反射是一种计算机处理方式。有程序可以访问、检测和修改它本身状态或行为的这种能力。能提供封装程序集、类型的对象。对于Java这种OOP语言来讲,运行状态中,我们可以根据“类的部分信息”来还原“类的全部信息”,这就是Java中的反射。Java虚拟机的体系结构Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上...
Kotlin-实体类反射获取字段属性和该属性的值
需求:需求是在数据库插入的时候,不使用第三方框架,直接进行数据库操作。在插入时,由于字段数量的庞大,使用考虑使用反射来获取字段属性和字段值插件:org.jetbrains.kotlin:kotlin-reflect:1.1.4-3方法: suspects. javaClass. kotlin.
学习Kotlin(七)反射和注解
  推荐阅读:学习Kotlin(一)为什么使用Kotlin学习Kotlin(二)基本语法学习Kotlin(三)类和接口学习Kotlin(四)对象与泛型学习Kotlin(五)函数与Lambda表达式学习Kotlin(六)扩展与委托学习Kotlin(七)反射和注解学习Kotlin(八)其他技术Kotlin学习资料总汇   目录 1.反射 1.1类引用 1.2函数引用 1.3属性引用 2...
反射调用Kotlin类里的Companion函数
此时有个类C class C { companion object { fun a() { println("a") } fun b(s: String) { println("b $s")
【Kotlin】Kotlin与Java反射实践
Google发话Kotlin成为Android开发的一级语言,然后Kotlin就瞬间火了起来,各种教程什么的也席卷而来,不过大部分都差不多,语法、用法、规范,或是官方文档、或是中文翻译,无论看哪个都一样。 官网:http://kotlinlang.org/ 中文站:https://www.kotlincn.net/ 菜鸟教程:http://www.runoob.com/kotlin/
Kotlin中的反射
博客地址https://sguotao.top Java中的反射机制,使得我们可以在运行期获取Java类的字节码文件中的构造函数,成员变量,成员函数等信息。这一特性使得反射机制被常常用在框架中,想要比较系统的了解Kotlin中的反射,先从Java的反射说起。 Java中的反射 通常我们写好的.java源码文件,经过javac的编译,最终生成了.class字节码文件。这些字节码文件是与平台无关的,使...
kotlin在主程序中提交数据到fragment中并显示的简单练习
MainActivity.kt   package com.example.administrator.kt_test import android.app.FragmentManager import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.view.View
一些机型TextView:ellipsize设置了Marquee还显示省略号的问题
    奇葩的发现在三星S4上设置TextView的ellipsize="marquee"居然显示省略号。翻阅TextView源码发现有一段代码涉及到ViewConfiguration if (ViewConfiguration.get(context).isFadingMarqueeEnabled()) { setH...
使用反射获取和设置对象的值
使用java如何获取对象的私有成员变量的值呢? 有一个bean: public class Student2 { /*** * 学号 */ private String schoolNumber; private String classroom; public void setSchoolNumber(String schoolNumber) { ...
新手上路,Kotlin学习笔记(九)---注解和反射
        入行没几年的小码农,近期学习Kotlin,做一份笔记记录,此文依据《Kotlin实战》这本书的流程记录,部分示例内容均摘自《Kotlin实战》,记下自己的理解,本篇将记录注解和反射的知识点。        //上一章  新手上路,Kotlin学习笔记(八)---泛型的使用一、注解        1、注解的使用方式        和java中一样,注解使用的时候使用@符号作为前缀,但...
kotlin使用反射(javaClass.getMethod)进行对象赋值时遇到的java.lang.NoSuchMethod问题
写法一: val m = goodStock!!.javaClass.getMethd("set$fieldName", Float::class.java) m.invoke(goodStock, if (valueStr.isNullOrEmpty()) null else valueStr.toFloat()) 在使用反射给对象赋值时,遇到如下报错: 仔细查看报错能够发现setPound...
Android 代码混淆及遇到的问题
代码混淆有其必要性及特殊性,要用好混淆文件,也得注意其中隐藏的坑。 一、基本配置: 1、基本指令的添加 ############################################# # # 对于一些基本指令的添加 # ############################################# # 代码混淆压缩比,在0~7之间,默认为5,一般不做修改 -optimiza...
反射获取类属性
  Field[] attributesCount = UserInfo.class.getDeclaredFields();
Kotlin--›初识Android Proxy接口动态代理
接口的动态代理, 使用这个技术最多的就是Retrofit框架了. 首先要注意: 动态代理只能代理接口,也就是interface声明的类 否则会抛异常: Caused by: java.lang.IllegalArgumentException: com.angcyo.proxydemo.Target is not an interface at java.lang.refle...
转向Kotlin——泛型
无论是Java还是Kotlin,泛型都是一个非常重要的概念,简单的泛型应用很容易理解,不过也有理解起来麻烦的时候。 泛型基础 在了解Kotlin的泛型之前,先来看看Java中的泛型: 举个栗子:在JDK中,有一类列表对象,这些对象对应的类都实现了List接口。List中可以保存任何对象: List list=new ArrayList(); list.add(55); list.add("...
Kotlin获取组件对象的泛型方法
刚接触kotlin记一下: findViewById()这个方法用来获取组件对象 第一种普通的: //button id为 btn_1 ...mian(){ private var btn:Button?=null //kotlin防止出现空指针用了? onCreate(...){ btn=findViewById(R.id.btn_1) //这里...
如何反射出对象的所有属性?
对比JS、Java和Swift实现反射的区别
Kotlin 自动获取ID
像 butterknife 或者DataBinding 一样,总是可以帮助我们节约时间去findViewByID, 在Kotlin中,也可以这样,我们只需要在XML布局中,将控件ID命名,然后就可以直接掉用了,具体实现如下: 1 在项目的build.gradle中添加 buildscript { repositories { jcenter()
[Kotlin]Kotlin学习笔记(四):类与对象、泛型详解
主要内容包括,类定义、类属性、backing field(后端变量)、泛型、继承、接口、方法重写、getter与setter、类型协变、类型投射、泛型约束
自定义工具类-----通过图片名称获取资源文件(运用反射)
一、用kotlin写的话如下: object ReflectUtil { /** * 获取图片名称获取图片的资源id的方法 ,调用的时候 * getResourceByReflect("sdf", R.mipmap::class.java) */ fun getResourceByReflect(imageName: String, mipmap: ...
Android 使用反射机制获取或设置系统属性(SystemProperties)
Android 使用反射机制获取或设置系统属性(SystemProperties) 网上有很多介绍,但是感觉比较混乱!由于自己能力有限,只做一些简单易懂的介绍。 一.获取和设置SystemProperties属性的代码 下面是通过反射来获取和设置系统属性的代码 public final class ReflectUtil { public static String getP...
Android中类的反射的两个应用示例
类反射的两个实际应用示例:放射类对象和获取Android中资源文件的ID。
swift3.0反射的到struct中的属性值和属性名
struct Person{     var name:String     var age:Int     var height:Double? } let aPerson = Person(name:"xijinping", age:48, height:180)         let structMirror = Mirror(reflecting: aPerson).ch
Kotlin 是如何避免空指针问题的
在谈Kotlin的优势的时候,大家都会想到空指针安全这一点,那么Kotlin又是如何避免这些问题的呢?下面从Kotlin的一些语法规则上给出介绍。可空类型默认声明的变量是不能为 null 的,如果要使变量能为 null, 需要添加 ?操作符。例如:val name: String = null // 编译错误var name = "harry" name = null // 编译错误// 正确的写法
反射获取全部成员变量,并获取对应的值
直接代码Kotlin、java 两种 准备实体类class UserInfo(var name: String, var nickname: String) { fun loginValue (){ System.err.print("name = $name nickname = $nickname") } }public class UserInfoJ { private ...
Android 通过反射获取系统组件的私有变量,并做更改
使用场景: 因为系统控件已经封装好了,而我们又需要自定义一些内容。 例如: 1、toolbar左边的setNavigationIcon我们需要自定义,做一动画效果, 2、recyclerView的滑动监听OnItemTouchListeners。 等一些需要更改私有变量的控件   实现代码片段 Class<?> class1 = Class.forName("android...
学习Kotlin(四)对象与泛型
  推荐阅读:学习Kotlin(一)为什么使用Kotlin学习Kotlin(二)基本语法学习Kotlin(三)类和接口学习Kotlin(四)对象与泛型学习Kotlin(五)函数与Lambda表达式学习Kotlin(六)扩展与委托学习Kotlin(七)反射和注解学习Kotlin(八)其他技术Kotlin学习资料总汇   目录 1.对象 1.1 匿名类与对象 1.2 静态类成员与伴生对象 ...
快速批量解决Kotlin包名和文件所在路径不一致问题
简要介绍 Kotlin具有一个特殊技能,允许包名和文件所在路径不一致. 我只能说,你是强大得有个不合时宜了.这样会导致文件管理出现及其混乱的局面,特别是工程大了之后,这事就够你喝一壶了. 问题样例: 下面的UserActivity,处于com/hbs/tlist/ui/activity目录下,但是包名却是com.cxyzy.demo.ui.activity.此文件是我从其他地方拷贝过来的,如果只有...
Android Kotlin 动态申请权限
Android Kotlin 动态申请权限
2017最新详解Android中对话框之ProgressDialog
这篇文章主要介绍了详解Android中提示对话框(ProgressDialog和DatePickerDialog和TimePickerDialog&PopupWindow)的相关资料,需要的朋友可以参考下: ProgressDialog(精度条对话框): 1.直接调用ProgressDialog提供的静态方法show()显示 2.创建ProgressDialog,再设置对话框的参数,最后
2_kotlin安卓(页面跳转)intent(显式)
新建一个空的活动(用来跳转用) 默认就好 增加一个字符串 修改布局文件(跳转后,显示的内容) 实现界面跳转 编译代码并打开模拟器。点击”确定“控件 跳转到第二页面 ...
安卓Kotlin开发系列之简单按钮的实现
步骤一、拖控件 首先你在主页面,把TextView添加到主页面,添加后,会有一个红色感叹号,分别拖按钮的四条边中间的四个点到页面边,将其处于如下状态。 然后再把button拖进去,重复上面的步骤即可。 拖入button如下图所示     如果出现黄色警告,可以点击黄色警告后,点击下面出现的问题,按fix,为按钮添加Resource_name名字后确认即可消除。 ...
Android 5.0中反射不到 类中的方法的问题
Android5.0 上,在使用反射(一个应用A需要调用另外一个应用B的方法)时,发现B中的一些方法反射不到,而另外一些就可以。代码检查无误。      最后发现反射不到的方法 都是一些没有被调用过的方法。编译时,系统默认将没有被使用的方法 不打包。最终导致反射不到。      onResume方法和onKeyguardTouched方法反射不到,就绕过编译器,强制调用下。实际上这两个方法并不
Android 9无法通过反射获取系统属性
Android 9.0之后获取无法通过反射获取系统属性,如果我们需要知道手机某个属性,可以通过以下的方式.注意:这种方式不能获取所有的属性.不然谷歌显示SystemProper的访问就没有意义了. package com.tinno.android.appinfocollector.tools; import android.text.TextUtils; import android.util...
Dagger2 Android 与 Databinding 在 Kotlin中使用报错的问题解决
Dagger2在Kotlin中异常错误解决:@dagger.android.ContributesAndroidInjector was used, but dagger.android.processor.AndroidProcess
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java学习常出现的问题 反射java学习