package com.coderising.jvm.constant; public class MethodRefInfo extends ConstantInfo { private int type = METHOD_INFO;// u1 tag private int classInfoIndex;// u2 class_index private int nameAndTypeIndex;// u2 name_and_type_index public MethodRefInfo(ConstantPool pool) { super(pool); } public String getClassName() { ClassInfo c = (ClassInfo) this.constantPool .getConstantInfo(classInfoIndex); return c.getClassName(); } public String getMethodName() { NameAndTypeInfo nt = (NameAndTypeInfo) this.constantPool .getConstantInfo(nameAndTypeIndex); return nt.getName(); } public String getParamsAndReturnType() { NameAndTypeInfo nt = (NameAndTypeInfo) this.constantPool .getConstantInfo(nameAndTypeIndex); return nt.getTypeInfo(); } @Override public int getType() { return type; } @Override public void print() { System.out.println("u1 tag:" + getType() + " MethodInfo" + ",u2 class_index:" + getClassInfoIndex() + ",u2 name_and_type_index" + getNameAndTypeIndex()); } @Override public String toString() { return getClassName() + ":" + getMethodName() + ":" + getParamsAndReturnType(); } /* * getter setter */ public int getClassInfoIndex() { return classInfoIndex; } public void setClassInfoIndex(int class_index) { this.classInfoIndex = class_index; } public int getNameAndTypeIndex() { return nameAndTypeIndex; } public void setNameAndTypeIndex(int name_and_type_index) { this.nameAndTypeIndex = name_and_type_index; } }