package field; import constant.ConstantPool; import iterator.ByteCodeIterator; /** * Created by IBM on 2017/4/12. */ public class Field { private int accessFlag; private int nameIndex; private int descriptorIndex; private ConstantPool pool; public Field(int accessFlag, int nameIndex, int descriptorIndex, ConstantPool pool) { this.accessFlag = accessFlag; this.nameIndex = nameIndex; this.descriptorIndex = descriptorIndex; this.pool = pool; } public static Field parse(ConstantPool pool, ByteCodeIterator iter) { int accessFlags = iter.nextU2ToInt(); int nameIndex = iter.nextU2ToInt(); int descriptor_index = iter.nextU2ToInt(); int attributesCount = iter.nextU2ToInt(); if (attributesCount > 0) { throw new RuntimeException("Field字段表,暂时不支持存在属性"); } return new Field(accessFlags, nameIndex, descriptor_index, pool); } @Override public String toString() { return pool.getUTF8String(nameIndex) + ":" + pool.getUTF8String(descriptorIndex); } }