kotlin 反射java类_Kotlin中的反射

本文介绍了Java的反射机制,包括获取Class对象、构造函数、成员变量和成员函数等,并探讨了Kotlin中的反射,强调了Kotlin反射与Java的不同之处,如KClass对象的获取及Kotlin特有的反射方法。同时,文章提醒了在Kotlin 1.1版本中反射某些内置类型可能抛出异常,以及Kotlin反射效率相对较低的问题。
摘要由CSDN通过智能技术生成

Java中的反射机制,使得我们可以在运行期获取Java类的字节码文件中的构造函数,成员变量,成员函数等信息。这一特性使得反射机制被常常用在框架中,想要比较系统的了解Kotlin中的反射,先从Java的反射说起。

Java中的反射

通常我们写好的.java源码文件,经过javac的编译,最终生成了.class字节码文件。这些字节码文件是与平台无关的,使用时通过Classloader去加载这些.class字节码文件,从而让程序按照我们编写好的业务逻辑运行。Java的反射主要是从这些.class文件中获取我们想要得到的内容,那么Java中的反射能够得到哪些内容呢?

获取Class对象

Java是面向对象的语言,同样的.class字节码文件也不例外,想要获取.class文件中的内容,就要先获取.class文件对应的Class对象。Java中获取Class对象的方式有三种。

//1.Class.forName("类名字符串") (注意:类名字符串必须是全称,包名+类名)

Class baseInfo = Class.forName("top.sguotao.ReflectionJava");

//2.类名.class

Class object = Object.class;

//3.实例对象.getClass()

Class date = (new Date()).getClass();

Class testclass = this.getClass();

获取类的构造函数Constructor

获取Class对象之后,就可以获取其中的构造函数,从而去创建实例对象。类的构造函数对应java.lang.reflect.Constructor。获取构造函数归纳起来有以下五种方式:

// 1.获取参数列表是parameterTypes,访问控制符是public的构造函数

public Constructor getConstructor(Class[] parameterTypes)

// 2.获取所有访问控制符是public的构造函数

public Constructor[] getConstructors()

// 3.获取参数列表是parameterTypes,并且是类自身声明的构造函数,访问控制符包含public、protected和private的函数。

public Constructor getDeclaredConstructor(Class[] parameterTypes)

//4.获取类自身声明的全部的构造函数,访问控制符包含public、protected和private的函数。

public Constructor[] getDeclaredConstructors()

//5.如果类声明在其它类的构造函数中,返回该类所在的构造函数,如果存在则返回,不存在返回null

public Constructor get

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值