java基础-反射机制


一、什么是反射?

反射机制:允许我们在运行时发现和使用类的信息

反射就是把java类中的各种成分映射成一个个的Java对象
例如:一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。

二、反射基础

1.Class类

Class类,存在于JDK的java.lang包中,Class类的实例表示java应用运行时的类或接口
特点:
1.Class类是类的一种
2.手动编写的类被编译后会产生一个Class对象,其表示的是创建的类的类型信息,而且这个Class对象保存在同名.class的文件中(字节码文件)
3.每个通过关键字class标识的类,在内存中有且只有一个与之对应的Class对象来描述其类型信息,无论创建多少个实例对象,其依据的都是用一个Class对象。
4.Class类只存私有构造函数,因此对应Class对象只能有JVM创建和加载
5.Class类的对象作用是运行时提供或获得某个对象的类型信息

2.类字节码

计算机是不能直接运行java代码的,必须要先运行java虚拟机,再由java虚拟机运行编译后的java代码
java属于高级语言,计算机无法直接识别高级语言,必须先编译成计算机可以识别的字节码文件,jvm才能正确识别指令并运行
java间接编译成字节码文件,在通过不同平台的jvm来解释执行,达到一次编译,处处运行的效果
java字节码文件:8位字节为基础的一个二进制流文件

三.反射的使用

1.Class类对象的获取

1.根据类名获取class对象:类名.class
2.根据对象获取class对象:对象.getClass()
3.根据全限定类名获取class对象:Class.forName(全限定类名路径)

2.反射常用方法

1.Class类的方法
-forName():获取Class类的一个引用
-getName():获取全限定的类名
-getSimpleName():获取类名
-isInterface():判断是否为接口
-getFields():获取某个类所有公共(public)的字段
-getDeclaredFields:获取某个类自己声明的字段

2.Constructor类及其用法
-forName():返回与带有给定字符串名的类或接口相关联的 Class 对象。
-getConstructor():返回指定参数类型、具有public访问权限的构造函数对象
-getConstructors():返回所有具有public访问权限的构造函数的Constructor对象数组
-getDeclaredConstructor():返回指定参数类型、所有声明的(包括private)构造函数对象
-getDeclaredConstructor():返回所有声明的(包括private)构造函数对象
-newInstance():调用无参构造器创建此 Class 对象所表示的类的一个新实例。

3.Field类及其用法
-getDeclaredField():获取指定name名称的(包含private修饰的)字段,不包括继承的字段
-getDeclaredFields():获取Class对象所表示的类或接口的所有(包含private修饰的)字段,不包括继承的字段
-getField():获取指定name名称、具有public修饰的字段,包含继承字段
-getFields():获取修饰符为public的字段,包含继承字段

4.Method类及其用法
-getDeclaredMethod():返回一个指定参数的Method对象
-getMethods():返回一个包含某些 Method 对象的数组


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值