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