美文网首页
JAVA-反射机制和动态编译

JAVA-反射机制和动态编译

作者: 九号锅炉 | 来源:发表于2019-01-24 16:12 被阅读0次

下面通过一段代码来引入反射机制的作用。

Interface Function{
  void doWork();
}
class functionA implements Function{
  @Override
  public void doWork(){
          System.out.println("functionA");  
  }
}
class functionB implements Function{
  @Override
  public void doWork(){
          System.out.println("functionB");  
  }
public static void main(){
    Function f = new functionA();//需要执行functionA方法时
    //Function f = new functionB();//需要执行functionB方法时
    f.doWork();
  }
}

以上代码看似很好的解决需要执行不同方法的问题,需要哪个方法只要修改new类型那行代码就可以了。但是这样需要将程序停下了修改,并且重新编译。而对于一个运行中的服务器而言,是不会允许服务器停下了去修改代码的,但是服务器往往需要不断修改。这里就使用到了java的反射机制来进行动态编译。

Interface Function{
  void doWork();
}
class functionA implements Function{
  @Override
  public void doWork(){
          System.out.println("functionA");  
  }
}
class functionB implements Function{
  @Override
  public void doWork(){
          System.out.println("functionB");  
  }
public static void main(){
        try{  
            String className = getClassNameFromConfig();//从配置文件读取需要的类名
            Function f=(Function)Class.forName(className).newInstance();  
             f.doWork();
        }catch (Exception e) {  
            e.printStackTrace();  
        }  
  }
}

由于jvm类加载器会将所有类事先加载进来,使用反射时会去查找当前类是否被加载进来。这样只要修改配置文件中的类名就可以更改需要的类型,不需要重新编译。

相关文章

  • JAVA-反射机制和动态编译

    下面通过一段代码来引入反射机制的作用。 以上代码看似很好的解决需要执行不同方法的问题,需要哪个方法只要修改new类...

  • 反射&动态代理

    反射 Java 的动态性体现在:反射机制、动态执行脚本语言、动态操作字节码 反射:在运行时加载、探知、使用编译时未...

  • Spring框架的基本原理

    先来看看java中反射机制:只要给定类的名字就可以通过反射机制获取类的所有信息,实现动态创建对象和编译 https...

  • Android组件化架构 - 4. 动态创建 & 反射机制

    Android 组件化中使用动态创建的作用是解耦; 1. 反射机制 反射有两个作用:1.反编译:.class->....

  • Java-反射机制

    简介:通过获取Java编译后产生的字节码(class格式)文件,使用Java的反射机制从而获取得到该类的所有属性、...

  • JAVA-反射机制

    Class类类是对象,类是java.lang.Class类的实例对象。任何一个类都有一个隐含的静态成员变量。Cla...

  • Java-反射机制

    思考:在Java运行环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个...

  • Java反射机制

    反射的定义 Java本身属于静态语言,但是有着一个非常突出的动态机制;反射,即在程序运行时加载、探知、使用编译期间...

  • day27-反射和内置方法

    反 射 python是动态语言,而反射(reflection)机制被视为动态语言的关键。 反射机制指的是在程序的运...

  • Java反射机制

    一、Java 反射机制概述 1. 反射概述 Reflection (反射)是被视为 动态语言 (动态性是核心,底...

网友评论

      本文标题:JAVA-反射机制和动态编译

      本文链接:https://www.haomeiwen.com/subject/hytujqtx.html