package com.coderising.jvm.clz; import java.util.ArrayList; import java.util.List; import com.coderising.jvm.constant.ConstantPool; import com.coderising.jvm.field.Field; import com.coderising.jvm.method.Method; public class ClassFile { private int minorVersion; private int MajorVersion; private ConstantPool constantPool; private ClassIndex classIndex; private AccessFlag accessFlag; private List<Field> fields = new ArrayList<Field> (); private List<Method> methods = new ArrayList<Method> (); public int getMinorVersion() { return minorVersion; } public void setMinorVersion(int minorVersion) { this.minorVersion = minorVersion; } public int getMajorVersion() { return MajorVersion; } public void setMajorVersion(int majorVersion) { MajorVersion = majorVersion; } public ConstantPool getConstantPool() { return constantPool; } public void setConstantPool(ConstantPool constantPool) { this.constantPool = constantPool; } public void print() { // TODO Auto-generated method stub throw new RuntimeException("no implement"); } public ClassIndex getClzIndex() { return classIndex; } public void setClassIndex(ClassIndex classIndex) { this.classIndex = classIndex; } public AccessFlag getAccessFlag() { return accessFlag; } public void setAccessFlag(AccessFlag accessFlag) { this.accessFlag = accessFlag; } public List<Field> getFields() { return this.fields; } public void addFiled(Field field) { this.fields.add(field); } public List<Method> getMethods() { return this.methods; } public void addMethod(Method method) { this.methods.add(method); } public Method getMethod(String methodName, String paramterType) { for (Method method: this.methods) { if(getConstantPool().getUTF8String(method.getNameIndex()).equals(methodName) && getConstantPool().getUTF8String(method.getDescIndex()).equals(paramterType)) { return method; } } return null; } public Method getMainMethod() { return this.getMethod("main", "([Ljava/lang/String;)V"); } }