java 反射

1. 反射的定义

         java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。

2. 定义反射的三种方式

        1)Class.forName("全限定类名"); //将字节码加载进内存

        2)类名.class

        3) 对象.getClass()

3. Class类对象的常用方法

        1)获取构造函数

        

//获取public的构造函数
Constructor[] constructors = studentClass.getConstructors();
//获取所有构造函数(可以获取到私有的构造)
Constructor[] declaredConstructors = studentClass.getDeclaredConstructors();

//获取public的某一个构造函数(参数为:构造的参数Class对象)
Constructor constructor1 = studentClass.getConstructor(int.class, String.class);
//获取某一个构造函数(可以获取到私有的构造)
Constructor constructor2 = studentClass.getDeclaredConstructor(int.class, String.class, String.class);
//实例化一个对象
Object obj = constructor1.newInstance(20, "李四");
//私有构造函数可以访问
constructor2.setAccessible(true);

        2)获取成员变量

//获取public的成员变量
Field[] fields = studentClass.getFields();
//获取所有成员变量(包活私有的变量)
Field[] declaredFields = studentClass.getDeclaredFields();

//获取某一个public的变量
Field sex = studentClass.getField("sex");
//获取某一个成员变量
Field name = studentClass.getDeclaredField("name");
Student student = new Student();
//设置成员变量的值
sex.set(student, "男");
//获取成员变量的值
Object o = sex.get(student);
//将private的属性设置为可访问,就可以进行获取和设置操作了
name.setAccessible(true);

        3)获取成员方法

//获取public的方法
Method[] methods = studentClass.getMethods();
//获取所有方法
Method[] declaredMethods = studentClass.getDeclaredMethods();

//获取某个public的方法
Method test = studentClass.getMethod("test");
//获取方法
Method test2 = studentClass.getDeclaredMethod("test2");
//执行方法
test.invoke(new Student());
//获取方法名
test.getName();

        4)获取类名

studentClass.getName();

        5) 无参构造实例对象

studentClass.newInstance();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值