Atitti 类库   开发者 常用  api

目录

1.1. Meta anno注解元数据api 1

1.2. Ref 反射api 1

1.3. Database meta api 1

1.4. 切面asp库 1

1.5. Classloader api 1

1.6. 字节码库 1

  1. Meta anno注解元数据api
  2. Ref 反射api
  3. Database meta api
  4. 切面asp库
  5. Classloader api
  6. Ast api
  7. 字节码库javassist和Cglib  

如果你正在编写一个框架或者类库。有一些受欢迎的字节码库如javassist和Cglib Nodep asm可以供你选择,他们可以让你阅读和修改应用程序生成的字节码。

目前字节码修改技术有ASM,javassist,cglib,BCEL等。cglib就是基于封装的Asm. Spring 就是使用cglib代理库。关于cglib的使用介绍,

它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架

java动态性的两种常见实现方式

  • 字节码操作
  • 反射

运行时操作字节码可以让我们实现如下功能:

  • 动态生成新的类
  • 动态改变某个类的结构(添加/删除/修改  新的属性/方法)

优势:

  • 比反射开销小,性能高
  • JAVAasist性能高于反射,低于ASM

CGLIB

是一个强大的,高性能,高质量的Code生成类库,基于ASM实现。

JAVAssist

  • 是一个开源的分析、编辑和创建java字节码的类库,性能较ASM差,跟cglib查不到,但是使用简单

JAVAssist库的API

  • javassist最外层的API和Java的反射包中的API颇为类似、
  • 它主要有CtClass,CtMethod,以及CtField及各类组成。用以执行和JDK反射API中java.lang.Class,java.lang.reflect.Method,java.lang.reflect.Method.Field相同的操作。

局限性:

  • JDK5.0行语法不支持(包括泛型、枚举),不支持注解修改,但可以通过底层的javassist类来解决,具体参考javassist.bytecode.annotation
  • 不支持数组的初始化,如String[]{“1”,“2”},除非只有数组的容量为1
  • 不支持内部类和匿名类
  • 不支持continue和btreak表达式
  • 对于继承关系,有些不支持,例如:

Atitti 类库 开发者 常用 api 目录 1.1. Meta anno注解元数据api 1 1.2. Ref 反射api 1 1.3. Database meta api 1 1.4.相关推荐

  1. 十款开发者常用的Chrome插件,让chrome成为开发利器!

    Chrome浏览器无论是作为浏览器市场的NO1还是其强大的跨平台能力以及丰富的扩展插件,一直是许多开发者的首要选择的浏览器.chrome浏览器也因为其丰富的Chrome插件,帮助开发者们在开发流程中极 ...

  2. 03-Java核心类库_常用类库

    目录 一,常用类库 1,泛型 1.1 概述 1.2 使用 1.3 实例 1.4 限制泛型类型 1.5 泛型中的通配符 2,java.util.Objects 2.1 Object与Objects 2. ...

  3. 类库java_Java类库和常用类库介绍

    Java类库和常用类库介绍 2018-09-20 Java 类库和常用类库介绍--序 作者: zccst Java 类库概念: Java 的应用程序接口 (API) 以包的形式来组织,每个包提供了大量 ...

  4. 天翼云盘目录索引php,TCShare:一个天翼云盘api目录列表索引程序 通过宝塔安装天翼云盘...

    TCShare:一个天翼云盘api目录列表索引程序 通过宝塔安装天翼云盘 下载程序,修改congip.php中的AK SK和FD 宝塔中新建网站,上传修改过的程序到网站根目录 设置网站伪静态 Ngin ...

  5. php空间搭建tcshare,TCshare:天翼云盘API目录索引列表程序 新手注意事项及composer install出错处理...

    天翼云盘(原名天翼云)是中国电信面向个人用户推出的云服务产品,提供"极速安全"云端存储及分享服务. 天翼云盘凭手机号码登录使用,支持电信.联通.移动手机号码,覆盖WEB.PC客户端 ...

  6. 微信开发者工具的目录

    微信开发者工具的目录 utils存放js文件去实现小程序的功能(存放公共脚本文件),pages存放小程序的页面文件. 后面的五个称其为小程序的应用配置或者说全局配置. 2.1app.js是根目录js, ...

  7. 开发者常用的 Sublime Text 3 插件

    1.官网下载 Sublime Text 3 (已有安装包的,请忽略) Sublime Text 官网下载地址 : http://www.sublimetext.com/ 2.打开 Sublime Te ...

  8. python字符串类库_Python 常用类库

    python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的libraries(modules)如下: 1 ...

  9. C#通用类库--DOS常用命令

    <span style="color: #008000;" mce_style="color: #008000;">//</span>& ...

  10. Mac 开发者常用的工具

    在写 Mac 程序员的十个武器之前,我决定先讲一个故事,关于 Mac 和爱情的.(你们不是问 Mac 和爱情有个鸟关系吗?) 从前有一个孩子叫做小明,他不是高帅富,与高大上也毫无瓜葛,只有低调.无聊和 ...

最新文章

  1. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(不同分组配置不同的箱体填充色+自定义调色板)实战
  2. Camel In Action 读书笔记 (1)
  3. linux分区工具fdisk的使用
  4. WPF利用动画实现圆形进度条
  5. 基于事件驱动架构构建微服务第14部分:查询API
  6. 初识——信息安全等级保护
  7. 放弃用了7年的MyBatis !我选择 JDBCTemplate!
  8. windowns定时关机命令
  9. log4j从1.x平滑升级至2.x
  10. linux编写路由器固件,在Linux下用tftp刷写路由器固件
  11. 使用Kettle从国家统计局下载行政区划代码数据
  12. 『Python基础练习题』day04
  13. gerrit is not registered in your account, and you lack ‘forge author‘ permission.
  14. 前端移动端页面与手机尺寸和分辨率的关系
  15. 宏碁暗影骑士AN515-55/57/58原厂预装系统oem镜像
  16. android微信炸弹代码,微信炸一炸怎么弄安卓?拍一拍炸一炸会动炸弹设置教程...
  17. 蓝桥杯2017年第八届C/C++ B组省赛习题题解
  18. 用python设计一个简易的英汉互译界面_使用python一步一步搭建微信公众平台(二)----搭建一个中英互译的翻译工具...
  19. KubeCon China 2021 阿里云专场来了!这些首日亮点不容错过
  20. 聚合数据-免费的接口

热门文章

  1. 计算机软件行业职业病,IT行业的六大职业病,看看你有没有中
  2. wifinative.java_Android 中的WiFi剖析
  3. 2、http网络编程——libcurl的使用
  4. Spring Cloud Stream 简单使用
  5. [ CQOI 2014 ] 数三角形
  6. sql server 用户创建与权限管理
  7. Ubuntu 16虚拟机中 iptables操作
  8. 通过yum安装redis
  9. 黄聪:wordpress如何添加自定义文章快速编辑按钮
  10. java excel导出(基于注解)