package org.wsc.coderising.jvm.clz;
import org.wsc.coderising.jvm.constant.ClassInfo;
import org.wsc.coderising.jvm.constant.ConstantPool;
public class ClassFile {
/** 次版本 */
private int minorVersion;
/** 主版本 */
private int majorVersion;
/** 访问标志 */
private AccessFlag accessFlag;
/** 类及父类索引 */
private ClassIndex clzIndex;
/** 常量池 */
private ConstantPool pool;
public ClassIndex getClzIndex() {
return clzIndex;
}
public AccessFlag getAccessFlag() {
return accessFlag;
}
public void setAccessFlag(AccessFlag accessFlag) {
this.accessFlag = accessFlag;
}
public ConstantPool getConstantPool() {
return pool;
}
public int getMinorVersion() {
return minorVersion;
}
public void setMinorVersion(int minorVersion) {
this.minorVersion = minorVersion;
}
public int getMajorVersion() {
return majorVersion;
}
public void setMajorVersion(int majorVersion) {
this.majorVersion = majorVersion;
}
public void setConstPool(ConstantPool pool) {
this.pool = pool;
}
public void setClassIndex(ClassIndex clzIndex) {
this.clzIndex = clzIndex;
}
public void print() {
if (this.accessFlag.isPublicClass()) {
System.out.println("Access flag : public ");
}
System.out.println("Class Name:" + getClassName());
System.out.println("Super Class Name:" + getSuperClassName());
}
private String getClassName() {
int thisClassIndex = this.clzIndex.getThisClassIndex();
ClassInfo thisClass = (ClassInfo) this.getConstantPool().getConstantInfo(thisClassIndex);
return thisClass.getClassName();
}
private String getSuperClassName() {
ClassInfo superClass = (ClassInfo) this.getConstantPool().getConstantInfo(this.clzIndex.getSuperClassIndex());
return superClass.getClassName();
}
}