返回顶部

收藏

java使用ASM字节码工具调用类方法和实例方法

更多

调用静态方法:

//int c=sample.InvokeMethod.add(2,3);
mv.visitInsn(ICONST_2); //arg1
mv.visitInsn(ICONST_3); //arg2

mv.visitMethodInsn(INVOKESTATIC, 
   "sample/InvokeMethod", //class name
   "add", //static method name
  "(II)I"); //return type is integer

调用实例方法:

//obj.cal(4,5);
mv.visitVarInsn(ALOAD, 2); //load object from stack
mv.visitInsn(ICONST_4); //arg1
mv.visitInsn(ICONST_5); //arg2
mv.visitMethodInsn(INVOKEVIRTUAL, "sample/InvokeMethod", "cal", "(II)V");

实例化对象,即调用构造函数:

//sample.InvokeMethod obj=new sample.InvokeMethod(6,7);
mv.visitTypeInsn(NEW, "sample/InvokeMethod");
mv.visitInsn(DUP);
mv.visitIntInsn(BIPUSH, 6);
mv.visitIntInsn(BIPUSH, 7);
mv.visitMethodInsn(INVOKESPECIAL, "sample/InvokeMethod", "<init>", "()V");
mv.visitVarInsn(ASTORE, 4);

标签:java,asm

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. niyingxunzong 发表 2015-03-23 14:56:11 Eclipse 导入项目出现乱码
  2. puefu.he 发表 2018-04-25 10:35:21 自己动手实现一个极简 Web 框架
  3. flying5 发表 2015-03-05 02:19:43 hadoop程序调用System.exit无法退出的问题
  4. wenming.gapo 发表 2018-04-27 11:28:05 JVM GC 与 内存分配策略
  5. 博主 发表 2012-09-22 08:30:17 Online Spreadsheet技术历险记
  6. xubiao.zhuang 发表 2018-05-01 12:24:09 bboss session v5.0.5.7 发布
  7. root 发表 2015-04-13 03:46:02 JDBC操作数据库
  8. xubiao.zhuang 发表 2018-05-03 14:17:37 PHP还是Java?
  9. root 发表 2015-04-15 04:08:02 23种JAVA设计模式(3)-结构模式
  10. 刘莉莉 发表 2018-05-06 12:48:24 Jenkins 和 Github 的集成与部署
  11. root 发表 2015-04-16 04:52:01 java参数过多,怎么处理?
  12. 刘莉莉 发表 2018-05-09 14:21:14 Maven项目出现“请使用 -source 8 或更高版本以启用 lambda 表达式”

发表评论