框架设计之魂——反射(反射主要用于工具和框架的开发)

  本篇文章为你整理了框架设计之魂——反射(反射主要用于工具和框架的开发)的详细内容,包含有反射是框架设计的灵魂 反射主要用于工具和框架的开发 反射 构造方法 反射是什么设计模式 框架设计之魂——反射,希望能帮助你了解 框架设计之魂——反射。

   JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

  
 

  反射是框架设计的灵魂

  一、什么是反射

  JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

  要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.

  

  二、反射的原理

  反射就是把java类中的各种成分映射成一个个的Java对象

  例如:一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。

  其实:一个类中这些成员方法、构造方法、在加入类中都有一个类来描述

  ​编辑

  

  

  三、反射机制主要提供以下功能:

  ①在运行时判断任意一个对象所属的类;
 

  ②在运行时构造任意一个类的对象;
 

  ③在运行时判断任意一个类所具有的成员变量和方法;
 

  ④在运行时调用任意一个对象的方法;
 

  ⑤生成动态代理。

  

  

  四、Class类

  

  1.获取Class对象的三种方式

  1、Class clazz1 = Class.forName("全限定类名"); //通过Class类中的静态方法forName,直接获取到一个类的字节码文件对象,此时该类还是源文件阶段,并没有变为字节码文件。

   2、Class clazz2 = Person.class; //当类被加载成.class文件时,此时Person类变成了.class,在获取该字节码文件对象,也就是获取自己, 该类处于字节码阶段。

   3、Class clazz3 = p.getClass(); //通过类的实例获取该类的字节码文件对象,该类处于创建对象阶段

  

  通过类名获取Class对象,Class T c = Class.forName("类的完全路径");

  通过Class对象获取具体的类对象:Object o = (Object) c.newInstance();

  

  2、获取类中的构造方法:

  

  ​编辑

  ​编辑

  

  3、获取类中的属性:

  

  ​编辑

  ​编辑

  

  4、获取类中的方法:

  

  ​编辑

  ​编辑

  

  

  

  

  

  五、反射的使用

  注意:在运行期间,一个类,只有一个Class对象产生。

  1.通过反射获取构造方法并使用

  

  ​编辑

  

  

  2 .通过反射获取不同的构造方法。

  


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

 

   // TODO Auto-generated method stub

   //response.getWriter().append("Served at: ").append(request.getContextPath());

  


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

 

   // TODO Auto-generated method stub

  
response.getWriter().println(Modifier.toString(field.getModifiers())+","+field.getName()+","+field.getType());

  


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

 

   // TODO Auto-generated method stub

   //response.getWriter().append("Served at: ").append(request.getContextPath());

  以上就是框架设计之魂——反射(反射主要用于工具和框架的开发)的详细内容,想要了解更多 框架设计之魂——反射的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: