package com.coderising.jvm.constant; import com.coderising.jvm.constant.ConstantInfo.Visitor; public class FieldRefInfo extends ConstantInfo{ private int type = ConstantInfo.FIELD_INFO; private int classInfoIndex;// ָ�� ����Ϣ������ private int nameAndTypeIndex;// ָ����ֶ� �� ���ֺ����� ������ public FieldRefInfo(ConstantPool pool){ super(pool); } public int getType() { return type; } public int getClassInfoIndex(){ return classInfoIndex; } public void setClassInfoIndex(int classInfoIndex){ this.classInfoIndex = classInfoIndex; } public int getNameAndTypeIndex(){ return nameAndTypeIndex; } public void setNameAndTypeIndex(int nameAndTypeIndex){ this.nameAndTypeIndex = nameAndTypeIndex; } public String toString(){ NameAndTypeInfo typeInfo = (NameAndTypeInfo)this.getConstantInfo(this.getNameAndTypeIndex()); return getClassName() + " : " + typeInfo.getName() + typeInfo.getTypeInfo() + "]"; } public String getClassName(){ ClassInfo classInfo = (ClassInfo)this.getConstantInfo(this.getClassInfoIndex()); UTF8Info utf8Info = (UTF8Info)this.getConstantInfo(classInfo.getUtf8Index()); return utf8Info.getValue(); } public String getFieldName(){ NameAndTypeInfo typeInfo = (NameAndTypeInfo)this.getConstantInfo(nameAndTypeIndex); return typeInfo.getName(); } public String getFieldType(){ NameAndTypeInfo typeInfo = (NameAndTypeInfo)this.getConstantInfo(nameAndTypeIndex); return typeInfo.getTypeInfo(); } @Override public void accept(Visitor visitor) { visitor.visitFieldRef(this); } }