package com.coderising.jvm.constant; public abstract class ConstantInfo { public static final int UTF8_INFO = 1; public static final int FLOAT_INFO = 4; public static final int CLASS_INFO = 7; public static final int STRING_INFO = 8; public static final int FIELD_INFO = 9; public static final int METHOD_INFO = 10; public static final int NAME_AND_TYPE_INFO = 12; protected ConstantPool constantPool; public ConstantInfo(){ } public ConstantInfo(ConstantPool pool){// ��Ϊ�����������֮��Ҫ���� this.constantPool = pool; } public abstract int getType(); public ConstantPool getConstantPool(){ return constantPool; } public ConstantInfo getConstantInfo(int index){ return this.constantPool.getConstantInfo(index);// ������õ��� ConstantInfo ���� �ı��� constantPool �е� getConstantInfo������ // ContantInfo ���е� getConstantInfo ��������ͬ } public abstract void accept(Visitor visitor); public static interface Visitor{ public void visitClassInfo(ClassInfo info); public void visitFieldRef(FieldRefInfo info); public void visitMethodRef(MethodRefInfo info); public void visitNameAndType(NameAndTypeInfo info); public void visitString(StringInfo info); public void visitUTF8(UTF8Info info); } }