Y2_08_反射

本文深入解析Java反射机制,涵盖类对象获取、实例化、读写属性、调用方法及构造函数等核心操作。通过三种常见获取类对象的方式,以及如何使用反射进行动态实例化、属性操作和方法调用,为读者提供全面的反射机制应用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是反射

反射是一种机制,利用反射机制动态的实例化对象、读写属性、调用方法、构造函数。

如得到类对象

一切反射相关的代码都从获得类对象开始

3种获取方式:
2.1 类名.class;
2.2 对象名.getClass();
2.3 Class.forName(全限定名/全路径名);

实例化对象

1.传统方式

Student stu=new Student();

2.反射机制实例化:

Class cla=Class.forName("...")
Object obj=cla.newInstance();

注:异常错误 —ClassNotFoundException(类不存在|缺少Jar包)
同一个类,类对象只会被加载一次

根据类得到类名(全限定名/全路径名)

1) cName.getName(); ------------------->获取全限定名
2) cName.getSimpleName();----------->获取类名
3) cName.getPackage();----------------->获取包名

根据类得到类的属性

Field field=cla.getField("属性名”);
1) field.getName();---------------------------------------------------->获取属性名
2) field.getType();------------------------------------------------------>获取属性类型
3) field.getModifiers();----------------------------------------------->获取属性访问修饰符
4) field.set(Object,Object); ----->设置属性值,参数1:要设置属性所在对象;参数2:要设置的值;
5) field.getDeclaredField(“属性名”);----------->获取单个属性(私有、公有、受保护、默认、静态)
6) field.get(Object);----------------------------------------------->获取属性值,参数:要获取属性值的对象
7) field.getDeclaredField---------------------------->获取单个属性(私有、公有、受保护、默认、静态
8) field.getDeclaredFields();---------------------------->获取所有属性(私有、公有、受保护、默认、静态)

根据类得到类的方法

注 :1) 通过getDeclaredMethod调用方法时,请设置方法的访问权限setAccessible(true)
     2) 执行方法关键字:invoke

cla.getMethod(); -->获取单个公有方法
cla.getDeclaredMethod(); -->获取当个方法(包括私有、受保护、默认、公有)
cla.getMethods(); -->获取所有公有方法
cla.getDeclaredMethods(); -->获取所有的方法(包括私有、受保护、默认、公有)

根据类得到类的构造方法

cla.getConstrutor(); -->获取单个公有构造方法
cla.getDeclaredConstrutor(); -->获取单个构造方法(包括私有、受保护、默认、公有)
cla.getConstrutors(); -->获取所有的公有构造方法
cla.getDeclaredConstrutors(); -->获取所有的构造方法(包括私有、受保护、默认、公有)

根据类得到类的实现接口列表

Class[] interface=cla.getInterfaces(); -->获取类对象中所有实现接口列表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值