编程语言
首页 > 编程语言> > Java的反射

Java的反射

作者:互联网

Class类的理解

该类在Java.lang包下。
此Class首字母大写,不是public class的class,稍微注意一下哈

类的加载过程

程序经过javac.exe编译之后,会产生对应的一个或多个字节码文件,就是.class文件,接着使用java.exe其中的某个类进行解释运行。
相当于把,某个字节码文件加载到内存中。此过程称为类的加载。
而加载到内存中的类我们就称为运行时类,此运行时类就称为Class的一个实例。

类本身也是个对象... Java万事万物皆对象。静态方法的调用也可以说明类本身其实也是一个对象。

获取Class实例的方式

        // 获取Class的方式一
        // 调用运行时类的属性
        Class<Person> personClass = Person.class;
        System.out.println(personClass);
        // 方式二:通过运行时类的对象
        Person person = new Person();
        Class<? extends Person> personClass1 = person.getClass();
        System.out.println(personClass1);
        // 方法三:调用Class的静态方法,forName(classPath)
        Class<Person> personClass2 = (Class<Person>) Class.forName("Demo02day.Person");
        System.out.println(personClass2);

        System.out.println(personClass==personClass1);
        System.out.println(personClass==personClass2);

       //方式四
        ClassLoader classLoader = TestMain.class.getClassLoader();
        Class<Person> personClass3 = (Class<Person>) classLoader.loadClass("Demo02day.Person");
        System.out.println(personClass3);


这里主要展示了四种。从下面的地址判断中我们也可以看出,其实获得到的都是同一个Class的实例。
加载到内存中的运行时类,会缓存一定时间,在此时间内,可以通过不同的方法来获得此运行时类。

类的加载过程

类的加载->类的链接->类的初始化

类的加载器

标签:反射,Java,System,println,时类,out,Class,加载
来源: https://www.cnblogs.com/four1er/p/14286987.html