java程序动态代码 java动态是什么意思

怎样动态执行一段JAVA代码

首先你可以使用输入输出流(或者你说的可能是要用反射得到程序结果来解析)解析做出*.Java文件。

创新互联公司基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业服务器托管报价,主机托管价格性价比高,为金融证券行业服务器机柜租赁,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。

然后可以使用runtime调用Dos下的java编译命令编译取得class文件。

然后使用classloader,反射等组合执行生成的class文件。

在java代码中实现动态编译java文件

import javax.tools.*;

import java.io.*;

/**

* @author hardneedl

*/

final public class MyCompile {

/**

* @param args 命令行参数只有1个,即待编译的源代码文件的绝对路径

* @throws FileNotFoundException

*/

public static void main(String... args) throws FileNotFoundException {

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

int r = compiler.run(null,null,null,args[0]);

System.out.println(r == 0? "成功":"失败");

}

}

Java如何实现反射静态加载和动态加载实例代码详解

1.Java动态加载类和静态加载类的区别

new创建对象的方式称作为静态加载,而使用Class.forName("XXX")称作为动态加载,它们俩本质的区别在于静态加载的类的源程序在编译时期加载(必须存在),而动态加载的类在编译时期可以缺席(源程序不必存在)。

2.为什么需要动态加载类

对于我自己的理解,动态加载类增加了程序的灵活性。比如一个程序中有50个功能,但你可能只会使用其中的一个,如果你用的是静态加载的方式,你必须在编译前提供100个功能的所有定义,否则无法编译通过,若你使用的是动态加载机制,则不需要如此大费周章,用哪一个就定义哪一个即可。

静态加载:

public class Office_Static {

public static void main(String[] args) {

//new 创建对象,是静态加载类,在编译时刻就需要加载所有的可能使用到的类

if("Word".equals(args[0])){

Word w = new Word();

w.start();

}

if("Excel".equals(args[0])){

Excel e = new Excel();

e.start();

}

}

}

这个程序编译时必须有Word和Excel这两个类存在才行,即使判断后用不到Excel也要加载

动态加载:

接口OfficeAble :

public interface OfficeAble {

public void start();}

Java动态生成代码

可以的,我说说大概思路,很简单,你自己具体实现吧,把代码写给你没意义的:

1.将你这段字符串输出到一个文件里,用Java类文件的方式命名。

2.调用外部javac命令将该文件编译。

3.用类加载器(ClassLoad)动态加载新的class文件并用Class.forName()注册该类,然后就可以正常使用了。

上面的每一步都能在baidu中找到实现方法,自己发挥吧。


网站标题:java程序动态代码 java动态是什么意思
当前路径:http://azwzsj.com/article/dophpce.html