最近在研究反编译忽然看到 “字段的附加属性列表” 这么个名词 ,不是很理解 很迷惑 期待高手解决(如果觉得分少,我可以在+)
我解析到下面这个地方。
field_info fields[fields_count]; //主要用于记录class及实例中的变量
field_info {
u2 access_flags;
u2 name_index;
u2 descriptor_index;
u2 attributes_count;
attribute_info attributes[attributes_count];
attribute_info {//就是在这个attribute_info中说2的位置是属性列表的长度,3的位置放的是字段的附加属性列表的值
u2 attribute_name_index;
u4 attribute_length;//2
u1 info[attribute_length];//3
}
}
解决方案 »
- 简单问题:jsp 调用自己写的类,出现了一个错误,求助!!!
- 邮件开发高手进啊
- 16进制字符串转换为float值
- 怎么在在Action里得到页面的数据,然后跳转到另一个Action里(得到的数据也一起带过去)?
- Socket能否模仿浏览器方式向服务器发个请求,并得到返回数据
- 请问如何将一个数组扩大而不清除它里面原有的数据~~~这在java中如何实现
- 高分求IDEA的JAVA版源代码!
- java开发地图引擎
- 可否将网页文件的源代码作为String一次性读入吗?
- 那位兄弟能够帮我解决这个问题,分都给他了!
- 哪位用过XmlBean, 使用时出现问题, 美女高分求助......
- java序列与反序列主要是由于什么样的需求而发明的?
对于field中的attributes java虚拟机定义了两种 ,ConstantValue和Synthetic
ConstantValue指的就是常量,Synthetic指的是编译器生成的,也就是说源代码里没定义,编译器帮我们加上的。
对于method中的attributes java 虚拟机定义了Code,Exceptions和Synthetic
还有ClassFile中,说明是一个内部类
等等
2. Constantvalue : attribute_info被替代为:
Constantvalue_attribute {
u2 attribute_name_index;
u4 attribute_length; //必须为2
u2 constantvalue_index;
}那Synthetic 的结构是什么样的呢。