zoukankan      html  css  js  c++  java
  • Java反射的理解

    一、什么是反射

      反射是Java提供的动态获取对象和调用对象方法的功能。我们知道在Java中,获取对象的最常用的办法是通过关键字“new”,但这要我们事先将需要获取的对象写死在代码里,在代码运行期间无法改变。而Java的反射机制可以让我们动态获取对象,在代码运行期间才决定获取哪个对象。

    二、反射的作用

      Java引入反射机制,是为了提高程序的灵活性,减少代码之间的耦合度。比如我们要实例化一个Person类,如果不使用反射,我们只能通过关键字“new”进行实例化:

    1 Person person = new Person();

      被实例化的类写死在了代码中,运行期间不可更改。但如果我们使用反射,则代码如下:

     1 public class Test1 {
     2     public static void main(String[] args) {
     3 
     4         Object object;
     5         String className = "person.Person";               //Person类的全类名
     6 
     7         try {
     8             object = Class.forName(className).newInstance();    //获取Person类的运行时类并实例化
     9         } catch (Exception e) {
    10             e.printStackTrace();
    11         }
    12     }
    13 }

      反射支持我们使用全类名来获取对象,并且可以通过变量来传值。这样,我们就可以在代码的运行期间动态的决定实例化哪个类。不仅如此,我们还可以将类描述定义到配置文件中,如果想要实例化其他类,修改配置文件就可以了,而不需要修改代码再重新编译。这样就降低了代码之间的耦合度。

      Java的反射机制还提供了很多方法可以获取运行时类、进行类实例化、获取类的属性、获取类的方法、获取类的构造函数等。

      反射机制一般在框架中使用的较多,因为框架需要适应多种情况,对灵活性要求教高。理解好反射,是理解框架技术的基础。

  • 相关阅读:
    变量可变性问题
    Android 创建Listener监听器形式选择:匿名内部类?外部类?
    linux下安装zookeeper
    翻页工具类
    将哈夫曼树转化成二叉树
    Activity的启动流程分析
    题目1186:打印日期
    数据库设计--数据流图(DFD)
    c#基础之数组
    10.3.1 一个CONNECT BY的样例
  • 原文地址:https://www.cnblogs.com/ysyasd/p/10923876.html
Copyright © 2011-2022 走看看