javaWeb笔记(一) 反射

本文详细介绍了Java反射机制的原理,包括如何通过反射获取类的所有内容,并演示了如何利用反射实例化类、调用构造方法、操作属性和方法。文章强调了反射在框架开发中的重要性,特别是在配置文件中配置类时,通过反射可以实现灵活地执行类中的方法。

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

15、反射的原理

应用在一些通用性比较高的代码中
后面学的框架,大多都是使用反射实现

* 在框架开发中,都是基于配置文件开发
    ** 在配置文件中配置了类,可以通过反射得到类中所有内容,可以让类中某个方法执行

* 类中的所有内容:属性、没有参数的构造方法、有参数的构造方法、普通方法
反射原理
    * 首先java保存本地.java
    * 编译java文件,成.class
    * 使用jvm,把class文件通过类加载器加载到内存中
    * 万事万物都是对象,class文件在内存中使用class类表示

    *当使用反射时候使用反射首先需要得到class类
    三种方式
    * 类名.class
    * 对象.getClass()
    * 使用Class.forName("路径")

    属性 Field
    构造方法 Constructor
    方法 Method

16、使用反射来操作类

*首先获取到Class
* 比如要对一个类进行实例化,可以new,不使用new,怎么获取?
    *没有参数
Class c3 = Class.forName();
        Person p = (Person) c3.newInstance();
* 操作有参数的构造方法
    //传递的是有参数构造方法里面参数类型,参数类型使用class形式传递
    Constructor cs = c1.getConstructor(String.class,String.class);
    //通过有参数的构造方法设置值
    Person p1 = (Person) cs.newInstance("lisi","100");

18、使用反射操作属性

//操作name属性
Field f1 = c2.getDeclareField("name")
f1.set(Person实例,"wangwu");//相当于p.name = "wangwu";
如果属性是私有的
f1.setAccessible(true);//设置可以操作私有属性

19、使用发射操作方法

Method m1 = c4.getDeclaredMethod("setName",String.class);
m1.invoke(person实例,“wang”);
//操作私有方法
m1.setAccessible(true);
操作的方法是静态的方法时候,因为静态方法调用方式是类名.方法名,不需要类的实例
使用反射操作静态方法时候,也是不需要实例
    - m1.invoke(null,"niuqi");//第一个参数设置null就行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值