没有合适的资源?快使用搜索试试~ 我知道了~
09 - ASM使用ClassWrite生成接口+字段+方法 - 简书1
需积分: 0 0 下载量 32 浏览量
2022-08-03
11:36:47
上传
评论
收藏 1.01MB PDF 举报
温馨提示
试读
3页
09 - ASM使用ClassWrite生成接口+字段+方法 - 简书1
资源详情
资源评论
资源推荐
2022/2/23 上午9:09
09 - ASM使⽤ClassWrite⽣成接⼜+字段+⽅法 - 简书
https://www.jianshu.com/p/0add9a6bb5c0
1/7
-
ASM
使
⽤
C
la
ss
W
r
i
t
e
⽣
成
接
⼝
+
字
段
+
⽅
法
舍
是
境
界
. ..
字
数
阅
读
约
的
软
件
linux
云主
机
信
息
安
全
螺
杆
⼲式
真
空
泵
h5
⻚⾯
制
作
软
件
进
⼝
螺
杆
泵
关
注
⽣
成
接
⼝
+
字
段
+
⽅
法
⽬
标
编
码
实
现
public interface HelloWorld extends Cloneable {
int LESS = -1;
int EQUAL = 0;
int GREATER = 1;
int compareTo(Object o);
}
1
2
3
4
5
6
import lsieun.utils.FileUtils;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.FieldVisitor;
import org.objectweb.asm.MethodVisitor;
import static org.objectweb.asm.Opcodes.*;
public class HelloWorldGenerateCore {
public static void main(String[] args) throws Exception {
String relative_path = "sample/HelloWorld.class";
String filepath = FileUtils.getFilePath(relative_path);
// (1)
⽣
成
byte[]
内
容
byte[] bytes = dump();
// (2)
保
存
byte[]
到
⽂
件
FileUtils.writeBytes(filepath, bytes);
}
public static byte[] dump() throws Exception {
// (1)
创
建
ClassWriter
对
象
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
// (2)
调
⽤
visitXxx()
⽅
法
cw.visit(V1_8, ACC_PUBLIC + ACC_ABSTRACT + ACC_INTERFACE, "sample/HelloWorld",
null, "java/lang/Object", new String[]{"java/lang/Cloneable"});
{
FieldVisitor fv1 = cw.visitField(ACC_PUBLIC + ACC_FINAL + ACC_STATIC, "LESS
fv1.visitEnd();
}
{
FieldVisitor fv2 = cw.visitField(ACC_PUBLIC + ACC_FINAL + ACC_STATIC, "EQUA
fv2.visitEnd();
}
{
FieldVisitor fv3 = cw.visitField(ACC_PUBLIC + ACC_FINAL + ACC_STATIC, "GREA
fv3.visitEnd();
}
{
MethodVisitor mv1 = cw.visitMethod(ACC_PUBLIC + ACC_ABSTRACT, "compareTo",
mv1.visitEnd();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
海
运
价
格
表
舍
是
境
界
总
资
产
-
ASM
之
⽅
法
计
时
阅
读
-
ASM
之
a
sm
-
ut
il
和
a
sm
-
c
ommons
阅
读
-
ASM
之
C
la
ss
T
r
a
ns
f
orm
a
t
i
on
总
结
阅
读
关
注
热
⻔
故
事
妻
⼦
去
世
半
年
,
我
再
娶
⼀个
⼩
⼗
岁
的
⼥
⼈
有
错
吗
?
代
替
公
主
和
亲
后
,
我成
了
敌
国
后
宫
“
升
职
”
最
快
的
妃
⼦
直
播
间
打
赏
五
⼗
万,
⼥
主
播
主
动
私
信
我
要⻅
⾯
⽣
完
⼆
胎
,
⽼
公
给
我
雇
了
⼀个
“
后
”
⼩
保
姆
推
荐
阅
读
c
omp
a
r
e
T
o
⽤
法
学
习
阅
读
i
OS
中
cla
ss
与
stru
c
t
的
区
别
阅
读
S
w
if
t
枚
举
的
使
⽤
阅
读
i
OS
实
现
截
取
字
符
串中
汉
字
功
能
阅
读
循
环
操
作
阅
读
李多田
- 粉丝: 70
- 资源: 334
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0