java高级之类的加载与反射机制

1.类的加载与反射机制

  Java程序的运行原理: 

a.启动Java虚拟机

 b.将class文件装载到虚拟机中

 c.class文件读取到内存之后以对象的形式存在,这个对象的类型是Class类型

 d.找到主类,执行主函数

2.谁来加载类?  

  类加载器对象  ClassLoader

  AppClassLoader   负责加载应用程序的类

  ExtClassLoader   负责加载扩展类库

  Bootstrap加载器 引导类加载器 负责加载核心类库

  Bootstrap加载器是JVM的一部分,当JVM启动,Bootstrap加载器就已经启动

3.类加载和反射机制中最核心的类 :  Class


4.如何获得Class对象

  类名.class

对象.getClass()

Class.forName("包名。类名")

ClassLoaderd对象.loadClass("包名。类名");

基本类型的包装类.TYPE

  


5.判断两个类是不是同一个实际上是比较是不是同一个class对象

    实际上在Java体系中一个class文件只能由一个类加载器加载

    类加载器在加载class文件的时候总是先判断父加载器是否加载这个文件,如果父加载器加载了,就不再加载

    如果父加载器没有加载,再加载这个文件

  

  


6.Class对象是类中属性,方法和构造方法的描述

    通过class对象可以获得该类的构造方法,属性和方法

  


  7.反射

    可以在程序运行时通过类的Class对象动态获得类的属性,方法和构造方法,并动态调用的机制

   


8.不定项参数  

   

 参数个数不确定

  在一个方法中只能有一个不定项参数

  不定项参数必须是方法的最后一个参数

  

  


9.通过Class对象获得构造方法的四种方式

getConstructors()

getContructor(Class...type)



getDeclaredConstructors()

getDeclaredConstructor(Class...type)

1.通过构造方法实例化对象

con.newInstance();

2.通过class对象获得属性

getFields();

getField(String name);



getDeclaredFields();

getDeclaredField(String name)

3.通过属性调用对象

   属性.set(对象,属性值);

  

4.通过Class对象获得方法

getMethods();

getMethod(String name,Class...type);



getDeclaredMethods();

getDeclaredMethod(String name,Class...type);

5.通过方法调用对象

   

方法.invoke(对象,参数值...);

   


 

发布了52 篇原创文章 · 获赞 38 · 访问量 2500

猜你喜欢

转载自blog.csdn.net/weixin_44364444/article/details/104024702