动态生成JAVA代码

原创 2004年07月02日 15:18:00

动态生成JAVA代码<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

BCEL即Bytecode Engineering Library,它是一个第三方的字节码生成库,能帮助我们在内存中直接生成Java字节码。BCEL是一个源代码开放的免费代码库(http://sourceforge.net/projects/bcel/),可以帮助我们分析、创建、处理二进制的Java字节码。本文将说明任何用BCEL来动态生成JAVA代码

/*

?* 创建日期 2004-7-2

?* 创建人 HongSoft

?* 文件名 TestBCEL.java

?*/

package com.hongsoft.test;

?

import java.io.*;

import java.util.Stack;

//从sourceforge.net/projects/bcel/下载BCEL代码库

import de.fub.bytecode.classfile.*;

import de.fub.bytecode.generic.*;

import de.fub.bytecode.Constants;

?

public class TestBCEL? extends ClassLoader {

??? private Object o;

??? public static void? main(String[] args) {

??? ??? ???new TestBCEL ();??????

}

?

??? public? TestBCEL ()

?????? {

?????????? ??????

????????????? // 声明类, Trouble_ticket是类名, 超类是java.lang.Object

?????????????? //ACC代表access, new String[]{}是它要实现的接口的数组

??????? ???????//效果:public Trouble_ticket{}

????????????? ClassGen classgen

????????????????? ?? = new ClassGen("Trouble_ticket", "java.lang.Object", "",??????? ?? Constants.ACC_PUBLIC | Constants.ACC_SUPER,new String[]{});

???????

????????????? ? //常量池

ConstantPoolGen cp = classgen.getConstantPool();

????

????????????????? //构造属性,效果: public String creater=””;

????????????? ?? FieldGen fg=new FieldGen(Constants.ACC_PUBLIC, Type.STRING,??????????? ?? "creater",cp);

????????????????? //加入field

????????????? ?? classgen.addField(fg.getField());

??????

???????????????????? ? // 构造函数?????????????????? ? ?????????????????? ??classgen.addEmptyConstructor(Constants.ACC_PUBLIC);

???????????????????? ? //Byte形式

???????????????????? ? byte[] data = classgen.getJavaClass().getBytes();

???????????????????? ? //生成类

???????????????????? ? Class c = defineClass(data, 0, data.length);

???????????????????? ? try {

???????????????????????? ? o= c.newInstance();

?????????????????? ???????? //程序效果??????????????

???????????????????????? System.out.println(o.getClass().getName());

???????????????????????? System.out.println(o.getClass().getField("creater").getName());??? ????????????????????

???????????????????????? System.out.println(classgen.getFields().length);

???????????????????? ? } catch (IllegalAccessException e) {

???????????????????????? ? throw new RuntimeException(e.getMessage());

???????????????????? ? } catch (Exception e) {

???????????????????????? ? throw new RuntimeException(e.getMessage());

???????????????????? ? }

?????? }

???

}

程序运行结果如下:

Trouble_ticket

creater

1

版权声明:本文为博主原创文章,未经博主允许不得转载。

高效率动态生成html

在Ajax横道的今天,我们在页面交互上有了更高的要求,动态生成HTML毫无疑问是其中的一种。动态生成HTML的方式多种多样,其核心不外乎在前段(JS)或者后端(C#/PHP…)将数据组装成我们想要的模...
  • xingxing1828
  • xingxing1828
  • 2014年06月18日 10:54
  • 6955

后台动态生成table表格

以前看到动态生成table的代码时,认为特别复杂,看到代码就不想看,认为这个用不到,而且还抱着一种难的心理. 不管则着,还是逃不过,躲避不是好的方法,这次就用到了动态生成表的要求,不学不行呀,不然页面...
  • han_yankun2009
  • han_yankun2009
  • 2013年11月25日 13:34
  • 12130

JavaScript动态生成控件的方法

JavaScript动态生成控件的方法 这个是在项目里面遇到的问题,这个是一个Test,不过还是没有找到从页面映射数据到后台的方法,boss给出的方法是用json来传递数据,不过我还是不是很懂。下面...
  • qinqigang
  • qinqigang
  • 2016年10月21日 16:27
  • 196

动态生成表DataTable

接上篇文章《动态生成Table》,这篇内容差不多,只是上篇是把查出来的数据直接绑定到Table控件上,而这篇则是把查出来的数据放在了DataTable中,然后就可以将DataTable绑定到GridV...
  • liuyanlinglanq
  • liuyanlinglanq
  • 2013年12月07日 21:59
  • 2283

通过js实现动态化生成列表

1、Test.html Modal //E-NAME,E-TYPE,E-MON,E-T_MON,REDUCE,E-MONT...
  • u012151556
  • u012151556
  • 2016年12月31日 16:29
  • 5246

[Java Web]动态生成静态页

最近手机APP需要加一个分享功能。考虑到分享页面的点击量会远远大于注册用户量,为了减少服务器压力决定将分享页面生成html静态页供用户访问。 生成静态页的总体思路为: 从数据库中查找所需的数据...
  • sinat_19425927
  • sinat_19425927
  • 2015年01月04日 18:08
  • 1197

动态(程序运行时)生成枚举类型

动态(程序运行时)生成枚举类型 简介:       在程序运行时动态建立枚举类型及其包含的枚举项.这样我们就可以把枚举项放在web.config这样的xml文件中.便于随时更新,同...
  • fuweiping
  • fuweiping
  • 2016年01月08日 10:02
  • 447

模拟银行动态口令生成

模拟银行动态口令生成1. 原理如今动态口令算法采用一次性口令算法,即OTP(One-Time Password Algorithm), 银行使用的动态口令令牌使用的算法是OTP中的一种类型,称之为:T...
  • KoalaZB
  • KoalaZB
  • 2017年05月02日 00:51
  • 851

一段动态生成表格的JSP代码讲解

一段动态生成表格的JSP代码讲解 留言板 主题 内容 删除 message...
  • bcbobo21cn
  • bcbobo21cn
  • 2015年11月02日 14:29
  • 4806

项目整理--如何动态生成表格

项目整理–如何动态生成表格1. 纵向生成表格示例图: 1)后台数据封装用list封装map或者实体对象来存储取出来的多组数据。本次采用封装map方法。2)后台向前台传值 用ModelAndVi...
  • jaystar7
  • jaystar7
  • 2016年04月06日 17:47
  • 650
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态生成JAVA代码
举报原因:
原因补充:

(最多只允许输入30个字)