JavaWeb——反射

本文详细介绍了JavaWeb中的反射机制,包括反射的概念、获取字节码Class对象的三种方式,以及Class对象的功能:获取成员变量、构造方法和成员方法。通过实例展示了如何使用反射创建对象并执行方法,强调了反射在不修改原有类代码前提下实现动态操作的强大能力。
摘要由CSDN通过智能技术生成

反射介绍

        Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Java的反射机制是通过对Java的字节码文件的剖析实现的,在编程中,我们编写的Java文件在javac的编译下会生成一个class文件,这个文件就是Java的字节码文件。字节码文件记录中对应编译类的类名,构造器名,变量名和方法名等。Java的反射机制正是的字节码文件的解析得到任意类的所有属性和方法。

反射获取字节码Class对象

        Java获取字节码Class文件的方法一共有三种,其方法如下:

        1.Class.forName("全类名"):将字节码文件加载进内存,返回Class对象。多用于配置文件,将类名定义在配置文件中。读取文件,加载对象。

        2.类名.Class:通过类名的属性Class获取。这是在没有创建对象的时候。多用于参数的传递

        3.对象.getClass():封装在Object类中,多用于对象获取字节码的方式。

       我们以事先定义的一个person类为例子,通过上述三种方式的到该类的字节码文件:

public class demo01try {
    public static void main(String[] args) throws Exception {
        //1.Class.forName("全类名"):将字节码文件加载进内存,返回Class对象
        Class c1 = Class.forName("com.Javaweb.reflectman.person");
        System.out.println(c1);//如果报错可能是包名或者类名写错了


        // 2.类名.Class:通过类名的属性Class获取。这是在没有创建对象的时候
        Class c2 = person.class;
        System.out.println(c2);

        //3.对象.getClass():封装在Object类中
        person p = new person();
        Class c3 = p.getClass();
        System.out.println(c3);

        //用==去比较三个class对象
        System.out.println(c1 == c2);
        System.out.println(c1 == c3);
        System.out.println(c2 == c3);
    }
}

         上述代码中,我们通过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值