package com.github.ipk2015.coding2017.minijvm.field; import com.github.ipk2015.coding2017.minijvm.constant.ConstantPool; import com.github.ipk2015.coding2017.minijvm.loader.ByteCodeIterator; 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 accessFlag = iter.nextUNToInt(2); int nameIndex = iter.nextUNToInt(2); int descriptorIndex = iter.nextUNToInt(2); int attrCount = iter.nextUNToInt(2); if(attrCount != 0){ throw new RuntimeException("字段的属性不为0"); } return new Field(accessFlag,nameIndex,descriptorIndex,pool); } public String toString(){ return pool.getUTF8String(nameIndex)+":"+pool.getUTF8String(descriptorIndex); } }