`
raidyue
  • 浏览: 18968 次
  • 性别: Icon_minigender_1
  • 来自: 湖南常德
社区版块
存档分类
最新评论

动态编译

 
阅读更多

前几天谈论了关于动态编译的问题,与动态编译相对的肯定就是静态编译。
静态编译:在编译时确定类型,绑定对象
动态编译:在运行时确定类型,绑定对象。动态编译发挥了java的灵活性的优点。
定义一个接口

 

该接口的实现类

/**
 * Benz类实现IVehicle接口
 */
public class Benz{

 public static final String company = "Benz公司";
 额
 public int energy;
 
 public Benz(){
  this.energy = 10;
 }
 
 public Benz(int energy){
  this.energy = energy;
 }
 
 //启动
 public void startMe(){
  System.out.println("Benz启动...");
 }

 //前进
 public int forward(int dins){
  energy -= dins/100;
  System.out.println("Benz前进..."+dins);
  return energy;
 }

 //还有多少能量
 public int getEnergy(){
  return this.energy;
 }
}

 
在定义一个主类,使用静态编译的方法,在编译是就确定其类型

public class MainTest{
 public static void main(String[] args){
  Benz benz = new Benz();
  benz.forward(100);
 }
}

 
动态编译,从键盘读取输入的类名,从而得到其对象,关键语句,
 

 Class c = Class.forName(className);
  Object object = c.newInstance();
public class MainTest{
 public static void main(String[] args){
  Scanner scanner = new Scanner(System.in);
  String className = scanner.next();
  Class c = Class.forName(className);
  Object object = c.newInstance();
  IVehicle ve = (IVehicle)object;
 }
}

 通过对象回去该类的详细信息
  Class c1 = ve.getClass();
  String c1Name = c1.getName();
  System.out.println(c1Name);
  
  Method[] methods = c1.getMethods();//得到类中方法对象的数组
  Constructor[] cons = c1.getConstructors();//得到类定义的构造器的数组
  Field[] fields = c1.getFields();//得到类属性的数组
  Class superClass = c1.getSuperclass();//得到其父类
  Class[] interfaces = c1.getInterfaces();//得到其实现的接口

分享到:
评论

相关推荐

    C# wpf 动态编译简单代码

    在C#编程环境中,WPF(Windows Presentation Foundation)是一种用于构建桌面应用程序的UI框架,而动态编译则是C#的一项强大功能,允许程序在运行时编译和执行代码。这篇教程将带你了解如何在WPF应用中实现动态编译...

    慎用动态编译

    标题“慎用动态编译”指的是在编程过程中对动态编译这一技术的谨慎态度。动态编译是程序运行时根据需要将源代码编译为可执行代码的过程,与静态编译(编译时一次性完成)形成对比。在Java中,JIT(Just-In-Time)...

    C# wpf 动态编译脚本

    在某些应用场景下,开发者可能需要在运行时动态编译C#代码,这在WPF应用中也是完全可行的。动态编译脚本的能力为开发者提供了更大的灵活性,可以实现例如运行时更新业务逻辑、自定义用户脚本执行等功能。 在C#中,...

    如何用C#动态编译、执行代码

    ### 如何用C#动态编译、执行代码 在探讨如何使用C#动态编译与执行代码之前,首先需要理解几个关键的类及其属性和方法:`CSharpCodeProvider`、`ICodeCompiler`、`CompilerParameters`、`CompilerResults`以及`...

    android.bp动态编译文档

    本篇文档将深入探讨如何利用`Android.bp`实现动态编译,这对于项目的定制化具有重要的价值。 动态编译是一种优化构建过程的方法,它只编译必要的源代码,从而节省时间和资源。在`Android.bp`中,我们可以利用条件...

    JDK8 下 SpringBoot 应用动态编译 Java 源码并注入 Spring 容器

    SpringBoot 应用动态编译 Java 源码并注入 Spring 容器,实现动态修改接口和抽象类的实现。注意,项目以 Jar 包形式启动时要在命令行引入 tools.jar 的包,IDEA下可直接调试。 基于接口、抽象类实现不停机动态调整...

    .Net Core - 源代码动态编译

    .Net Core 源代码动态编译是现代软件开发中的一个重要技术,它允许程序在运行时对源代码进行编译,从而提高程序的灵活性和效率。动态编译与传统的静态编译有着显著的区别,静态编译是在应用程序发布之前将源代码转换...

    JavaCompiler --JDK6 API的简介(java动态编译)

    JavaCompiler --JDK6 API 的简介(java动态编译) JavaCompiler 是 Java 中的一个编译器接口,提供了编译 Java 源代码的功能。在 Java SE6 中,JavaCompiler 接口是 javax.tools 包的一部分,提供了标准的方式来...

    c#动态编译生成

    在C#编程中,动态编译是一个非常有用的特性,它允许程序在运行时生成和编译代码。这种技术主要用于各种场景,例如插件系统、代码生成、自动化测试等。本篇将详细介绍两种C#中实现动态编译的方法,并通过一个名为`...

    java动态编译指定java文件且将java文件生成jar

    本教程将深入讲解如何实现这个过程,主要关注`java动态编译`和`将class生成jar`这两个关键步骤,同时会涉及到`JavaCompiler` API的使用。 首先,让我们了解`JavaCompiler` API。这是Java标准库中的一部分,位于`...

    动态编译字符串成java,并且添加class到jvm

    在Java编程中,动态编译字符串成Java代码并将其加载到JVM(Java虚拟机)是一种高级技巧,常用于运行时代码生成、元编程或插件系统等场景。这一技术的核心在于利用Java的反射API和Java Compiler API。下面将详细阐述...

    C#代码动态编译、动态执行、动态调试

    前几天看到一篇关于.net动态编译的文章 .NET中的动态编译 ,很受启发。在此基础上我做了一些封装,为使调用更加简单,并增加了对动态代码调试的支持,相同代码只编译一次的支持,代码改动自动重新编译,代码引用文件...

    java内存动态编译执行

    Java内存动态编译执行是Java程序运行时的一个关键特性,它涉及到JVM(Java虚拟机)的即时编译器(JIT,Just-In-Time Compiler)和元空间(Metaspace)等核心概念。在Java的世界里,代码首先会被解释器逐行解释执行,...

    Java类动态加载(一)——java源文件动态编译为class文件

    这篇博客“Java类动态加载(一)——java源文件动态编译为class文件”可能主要探讨了如何在运行时将Java源代码(.java)编译成对应的字节码文件(.class),并将其加载到Java虚拟机(JVM)中。以下是对这个主题的详细解析...

    C#动态编译,可以编译TXT格式的文件形成C#文件

    在.NET框架中,C#语言提供了强大的动态编译能力,使得开发者可以在运行时将源代码字符串编译为可执行的程序集。这个过程通常涉及到System.CodeDom.Compiler命名空间中的类,如CodeDomProvider和CompilerResults等。...

    java 动态编译.java文件,动态运行类

    在Java编程中,动态编译和运行类是一项重要的能力,特别是在需要实时更新代码或实现热部署的场景下。本文将深入探讨如何利用Java的API来动态编译.java源文件,并执行编译后的类。 首先,Java的`javac`命令行工具是...

    利用Java的动态编译、动态加载结合EasyRules实现业务规则的动态性的项目源码

    利用Java的动态编译、动态加载结合EasyRules实现业务规则的动态性的项目源码,具体详情请查看相关博客https://blog.csdn.net/qq_31142553/article/details/85013989

    内存中动态编译执行java代码

    内存中动态编译执行Java代码是一种高级编程技巧,它允许我们在程序运行时根据需要创建、编译和执行新的Java代码。这种技术在某些场景下非常有用,比如在元编程、插件系统、自定义脚本执行或者代码热更新中。在Java中...

    java动态编译 ,写了一个jsp在页面上编辑java代码,然后servlet动态编译并执行main方法

    Java动态编译是一种技术,允许程序在运行时将源代码转换为字节码并加载到JVM(Java虚拟机)中。这种能力使得Java应用程序能够根据需要编译和执行新的代码,增强了软件的灵活性和可扩展性。在给定的场景中,用户通过...

    Android动态编译需要的包

    在Android开发过程中,有时我们需要对应用的字节码进行深入调试和优化,这时就涉及到动态编译和反编译的概念。动态编译主要是指在运行时对代码进行编译,而不是在应用程序安装时一次性完成。这能让我们在不重新发布...

Global site tag (gtag.js) - Google Analytics