package task8.jvm.constant;
import task8.jvm.print.ConstantInfoVisitor;
public class MethodRefInfo extends ConstantInfo {
private int type = ConstantInfo.METHOD_INFO;
private int classInfoIndex;
private int nameAndTypeIndex;
public MethodRefInfo(ConstantPool pool) {
super(pool);
}
public int getType() {
return type;
}
@Override
public void accept(ConstantInfoVisitor visitor) {
visitor.visitMethodRefInfo(this);
}
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() {
return getClassName() + " : " + this.getMethodName() + " : " + this.getParamAndReturnType();
}
public String getClassName() {
ConstantPool pool = this.getConstantPool();
ClassInfo clzInfo = (ClassInfo) pool.getConstantInfo(this.getClassInfoIndex());
return clzInfo.getClassName();
}
public String getMethodName() {
ConstantPool pool = this.getConstantPool();
NameAndTypeInfo typeInfo = (NameAndTypeInfo) pool.getConstantInfo(this.getNameAndTypeIndex());
return typeInfo.getName();
}
public String getParamAndReturnType() {
ConstantPool pool = this.getConstantPool();
NameAndTypeInfo typeInfo = (NameAndTypeInfo) pool.getConstantInfo(this.getNameAndTypeIndex());
return typeInfo.getTypeInfo();
}
}