package com.coderising.jvm.field; import com.coderising.jvm.constant.ConstantPool; import com.coderising.jvm.constant.UTF8Info; import com.coderising.jvm.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){ Field field=new Field(iter.nextU2toInt(),iter.nextU2toInt(),iter.nextU2toInt(),pool); int attrNum=iter.nextU2toInt(); System.out.println("attrNum:" + attrNum); // TODO : 如果field有属性个数, 这里需要解析 return field; } public String toString(){ String nameIndex=this.pool.getUTF8String(this.nameIndex); String descriptorIndex=this.pool.getUTF8String(this.descriptorIndex); return nameIndex+":"+descriptorIndex; } }