java反射相关

本文深入讲解Java反射机制的基本原理及应用。从Java文件到Class类的加载过程开始介绍,涵盖如何通过不同方式获取Class对象、操作类的构造方法、属性及普通方法等内容,并特别指出SpringAOP底层原理涉及的反射调用。

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

一、java反射原理:

1、把java文件保存到本地硬盘:.java。

2、编辑java文件,生成.class文件。

3、使用jvm,把class文件通过 类加载器 加载到内存中。

4、万事万物皆对象,class文件在内存中使用Class类来表示。

5、使用反射时,获取到Class类,就获取了里面的所有内容,包括:

      1)属性:Filed类。

      2)构造器:Constructor类。

      3)普通方法:Method类。

 

二、通过反射获取Class类的方法:

1、通过类名.class获取:Class cla = SysUser.class;

2、通过对象.getClass()方法获取:Class cla = new SysUser().getClass();

3、通过Class.forName("类的全路径")获取: Class cla = Class.forName("com.cosy.module.sys.module.SysUser");

 

三、通过反射操作类的构造方法:

1、操作无参构造:SysUser sysUser = cla.newInstance();

2、操作有参构造:SysUser sysUser = cla.newInstance("姓名", "年龄"); 【有参构造方法内参数是什么,这里就写什么】。

 

四、通过反射操作类的属性:

1、获取Class对象:Class cla = SysUser.class;

2、获取name属性:Filed filed = clas.getDeclaredField("name");

3、获取SysUser实例对象:SysUser sysUser = cla.newInstance();

4、给name属性赋值:

       【如果name属性是私有属性,需要设置权限:field.setAccessible(true);】

         field.set(sysUser, "名字");   【该步相当于:sysUser.setName("名字")】

 

五、通过反射操作类的普通方法【Spring AOP 底层原理中设计到用此来 调用目标对象方法】:

1、方法的权限是public :

    1).获取“introduceYourself”方法,参数是String类型

        Method method = claz.getDeclaredMethod("introduceYourself", String.class);

    2).调用方法:

        method.invoke(claz.newInstance(), "赵大")

2、方法的权限是private :

    1).获取“introduceYourself”方法,参数是String类型

        Method method = claz.getDeclaredMethod("introduceYourself", String.class);

    2).调用方法:

        method.setAccessible(true);

        method.invoke(claz.newInstance(), "赵大")

 3、方法是静态方法,即用static修饰:

 

    1).获取“introduceYourself”方法,参数是String类型

        Method method = claz.getDeclaredMethod("introduceYourself", String.class);

    2).调用方法:【静态方法不需要实例对象】

        method.invoke(null, "赵大")

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值