2-反射(框架设计的灵魂)1.框架:2.获取字节码class文件的三种方式 : 3.class对象13个获取方法

1.框架:半成品软件,可以在框架的基础上进行软件开发来简化代码

  1. 源代码阶段在硬盘

  2.class类对象阶段(内存中)   通过类加载器可以把.class的字节码文件加载到内存中去

成员变量封装为Fileld对象  然后注意看有个Fileld 后面的【】是个数组把这些对象都放里面

构造方法封装为Constructor对象

成员方法封装为Method[]对象

其实这里就是反射 :将类的各个组成部分封装为其他对象这就是反射机制

  3.运行阶段创建对象在内存

 其实打了str.之后跳出的方法就是反射  因为str字节进入内存 然后class类把方法都封装进了Method数组里然后把对象名展示出来。

2.获取字节码class文件的三种方式

     1.Class.forName("全类名");

     2.类名.class();

     3.对象.getClass();

这里还新建一个Person类

package reflect;

import domain.Person;

/*
获取Class对象的方式
1.Class.forName("全类名"),将字节码文件加载进内存,返回class对象
2.类名.class 通过类名的属性class获取
3.对象.getClass(),getClass()方法在Object类中定义着
 */
public class reflectDemo {
    public static void main(String[] args) throws Exception {
   //1.Class.forName("全类名"),将字节码文件加载进内存,返回class对象
        //全类名: 包名.类名
        Class cls1 = Class.forName("domain.Person");
        System.out.println(cls1);
        //2.类名.class 通过类名的属性class获取
        Class cls2 = Person.class;
        System.out.println(cls2);
        //3.对象.getClass(),getClass()方法在Object类中定义着
        Person p = new Person();
        Class  cls3= p.getClass();
        System.out.println(cls3);

        //==去比较三个对象
        System.out.println(cls1==cls2); //比较的是内存地址  true说明是一个对象
        System.out.println(cls3==cls2);
        //同一个字节码文件(*.class文件)在一次程序运行过程中只会被加载一次,
        //无论通过那种方式加载内存的class对象都是同一个。
    }
}

 3.class对象功能 

 13个获取方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值