1.反射
通俗易讲来说,就是“类”类,一个房子已经建好,去找图纸。反射可以去找类中的私有方法。
java默认有三种类加载器:BootstrapClassLoader,ExtensionClassLoader,AppClassLoader。
BootstrapClassLoader(引导启动类加载器):嵌在JVM内核中的加载器,该加载器是用C++语言写的,主要负责加载JAVA_HOME/lib下的类库,引导启动类加载器无法被应用程序直接使用。
ExtensionClassLoader(扩展类加载器):ExtensionClassLoader是用JAVA编写,且它的父类加载器是 Bootstrap。是由sun.misc.Launcher$ExtClassLoader实现的,主要加载JAVA_HOME/lib/ext目录中的类库。它的父加载器是BootstrapClassLoader。
AppClassLoader (应用类加载器):AppClassLoader是应用程序类加载器,负责加载应用程序 classpath目录下的所有jar和class文件。它的父加载器为ExtensionClassLoader。
类通常是按需加载,第一次使用该类时才加载。
双亲委派模型:当收到了一个类加载,自己先不去加载,交给自己的分类去完成,避免有些类被重复加载。
*********代码实现
$一个class对象 在内存中不会存在两个类对象
$在编译阶段,这个类可以不存在,但在编译阶段一定要把类创建出来
GetClass
1.如果在编写代码时,指导类的名称,且类已经存在,可以通过
包名.类名.class得到一个类的类对象
2.如果拥有类的对象,可以通过
Class 对象.getClass()得到一个类的类对象
3.如果在编写代码时,知道类的名称,可以通过
Class.forName(包名+类名):得到一个类的类对象
**********GetConstructor
*************GetMothod