java反射

在反射面前,你里面的东西都是透明的,里面的属性(也就是private Integer id)和方法(输出,打印,构造方法,get和set,还有tostring),在反射面前都能给你看的清清楚楚,然后反射可以调用这个类里面的所有方法,这种动态获取信息以及动态调用对象类里面的方法的功能叫做java语言的反射机制,反射使java语言这种静态编译型语言有了动态性。

所有的学生都有一个共同特征类Student,所有的人都有一个共同特征Person,所有的老师有一个共同特征,那么所有的类有没有共同特征,所有的属性,所有的构造方法,所有的方法也有共同特征,反射嘛,把这些属性,方法,再往前看一步。你既然叫类,那么你肯定满足它的所有条件啊。

 

 建立类的时候,先拿到字节码对象,再拿到Field,再弄Constructor,最后捣鼓method。

 字节码对象即Class类对象(这里的Class是一个类,并不是我们定义类的时候使用class关键字,这是值得注意的地方),每一个类的的.class文件就是一个字节码对象, .class文件我们知道,是我们编写的代码经过编译之后生成的文件,这个文件包含了源码里面的类的所有信息,既然如此,通过字节码对象就可以获取到类的所有信息.。

三种方式获得字节码对象:

        //1. Class.forName("完整的包名+类名")
        Class clazz1 = Class.forName("com.situ.Day21.reflect.Student");
        System.out.println("clazz1 = "+clazz1);
        //2. 类型.class
        Class clazz2 = com.situ.Day26.Student.class;
        System.out.println("clazz2 = "+clazz2);
        //3. 对象.getClass()
        com.situ.Day26.Student student = new com.situ.Day26.Student();
        Class clazz3 = student.getClass();
        System.out.println("clazz3 = "+clazz3);

2.构造方法,你得先拿到这个字节码对象,

getConstructors(只能拿到public的构造方法),或者getDeclaredConstructors,(甭管是private还是public的都能获取到),还有拿到构造方法的修饰符,constructor.getModifies(),private

还是public,1代表public,2代表private。        有的可以返回指定参数的构造方法

3.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值