反射---One(认识并获取java.lang.Class类)

一、 Class类 及 .class字节码文件

在我们编写好java程序之后,在命令行执行javac 命令,将会发现在同一个目录下生成了.class文件。这个文件成为类的字节码文件。

javac Hello.java

生成.class文件

①当程序运行时,这个字节码文件将会加载进入内存,此时称这个过程为 类的加载

②这个 被加载的.class字节码文件(Hello.class) 可以称其为 Class类的一个实例(对象),也就是我们用 Class类 来描述这个字节码文件。

③这个 原本的类(生成.class文件的类—hello.java文件中的Hello类) 可以称为 运行时类

(可以说在java中万物皆对象)

文档描述:

二、如何获得Class类的实例(对象)

①使用运行时类的属性
        //方法一:使用运行时类的属性:  .class属性
        Class<Person> pclass1 = Person.class;
        System.out.println(pclass1);   //class cn.one.Person
②使用运行时类的对象的方法
        //方法二:使用运行时类的对象的方法:  getClass()方法
        Person person = new Person();
        Class pclass2 = person.getClass();
        System.out.println(pclass2);      //class cn.one.Person
③调用Class的静态方法
        //方法三:调用Class的静态方法:  forName(String classPath---全类名)
        Class pclass3 = Class.forName("cn.one.Person");
        System.out.println(pclass3);        //class cn.one.Person
④使用类的加载器
        //方法四:使用类的加载器:classLoader
        ClassLoader classLoader = Demo02Class.class.getClassLoader();
        Class<?> pclass4 = classLoader.loadClass("cn.one.Person");
        System.out.println(pclass4);          //class cn.one.Person

注: 同一个字节码文件(*.class)在一次程序运行过程中,只会被加载一次,不论通过哪一种方式获取的Class对象都是同一个。

        System.out.println(pclass1 == pclass2);     //true
        System.out.println(pclass2 == pclass3);     //true
        System.out.println(pclass3 == pclass4);     //true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值