package com.donaldy.jvm.field; import com.donaldy.jvm.constant.ConstantPool; import com.donaldy.jvm.constant.UTF8Info; import com.donaldy.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){ int accessFlag = iter.nextU2ToInt(); int nameIndex = iter.nextU2ToInt(); int descriptorIndex = iter.nextU2ToInt(); //TODO : 因无static类型变量,所以这无 int attributesCount = iter.nextU2ToInt(); Field file = new Field(accessFlag, nameIndex, descriptorIndex, pool); return file; } public String toString() { //System.out.println("name : " + this.nameIndex + ", desc : " + descriptorIndex); String description = this.pool.getUTF8String(this.descriptorIndex); String name = this.pool.getUTF8String(this.nameIndex); return name + ":"+ description; } }