Class ClassGen

All Implemented Interfaces:
Cloneable

public class ClassGen extends AccessFlags implements Cloneable
Template class for building up a java class. May be initialized with an existing java class (file).
See Also:
  • Constructor Details

    • ClassGen

      public ClassGen(String className, String superClassName, String fileName, int accessFlags, String[] interfaces, ConstantPoolGen cp)
      Convenience constructor to set up some important values initially.
      Parameters:
      className - fully qualified class name
      superClassName - fully qualified superclass name
      fileName - source file name
      accessFlags - access qualifiers
      interfaces - implemented interfaces
      cp - constant pool to use
    • ClassGen

      public ClassGen(String className, String superClassName, String fileName, int accessFlags, String[] interfaces)
      Convenience constructor to set up some important values initially.
      Parameters:
      className - fully qualified class name
      superClassName - fully qualified superclass name
      fileName - source file name
      accessFlags - access qualifiers
      interfaces - implemented interfaces
    • ClassGen

      public ClassGen(JavaClass clazz)
      Initialize with existing class.
      Parameters:
      clazz - JavaClass object (e.g. read from file)
  • Method Details

    • getJavaClass

      public JavaClass getJavaClass()
      Returns:
      the (finally) built up Java class object.
    • addInterface

      public void addInterface(String name)
      Add an interface to this class, i.e., this class has to implement it.
      Parameters:
      name - interface to implement (fully qualified class name)
    • removeInterface

      public void removeInterface(String name)
      Remove an interface from this class.
      Parameters:
      name - interface to remove (fully qualified name)
    • getMajor

      public int getMajor()
      Returns:
      major version number of class file
    • setMajor

      public void setMajor(int major)
      Set major version number of class file, default value is 45 (JDK 1.1)
      Parameters:
      major - major version number
    • setMinor

      public void setMinor(int minor)
      Set minor version number of class file, default value is 3 (JDK 1.1)
      Parameters:
      minor - minor version number
    • getMinor

      public int getMinor()
      Returns:
      minor version number of class file
    • addAttribute

      public void addAttribute(Attribute a)
      Add an attribute to this class.
      Parameters:
      a - attribute to add
    • addAnnotationEntry

      public void addAnnotationEntry(AnnotationEntryGen a)
    • addMethod

      public void addMethod(Method m)
      Add a method to this class.
      Parameters:
      m - method to add
    • addEmptyConstructor

      public void addEmptyConstructor(int access_flags)
      Convenience method. Add an empty constructor to this class that does nothing but calling super().
      Parameters:
      access_flags - rights for constructor
    • addField

      public void addField(Field f)
      Add a field to this class.
      Parameters:
      f - field to add
    • containsField

      public boolean containsField(Field f)
    • containsField

      public Field containsField(String name)
      Returns:
      field object with given name, or null
    • containsMethod

      public Method containsMethod(String name, String signature)
      Returns:
      method object with given name and signature, or null
    • removeAttribute

      public void removeAttribute(Attribute a)
      Remove an attribute from this class.
      Parameters:
      a - attribute to remove
    • removeMethod

      public void removeMethod(Method m)
      Remove a method from this class.
      Parameters:
      m - method to remove
    • replaceMethod

      public void replaceMethod(Method old, Method new_)
      Replace given method with new one. If the old one does not exist add the new_ method to the class anyway.
    • replaceField

      public void replaceField(Field old, Field new_)
      Replace given field with new one. If the old one does not exist add the new_ field to the class anyway.
    • removeField

      public void removeField(Field f)
      Remove a field to this class.
      Parameters:
      f - field to remove
    • getClassName

      public String getClassName()
    • getSuperclassName

      public String getSuperclassName()
    • getFileName

      public String getFileName()
    • setClassName

      public void setClassName(String name)
    • setSuperclassName

      public void setSuperclassName(String name)
    • getMethods

      public Method[] getMethods()
    • setMethods

      public void setMethods(Method[] methods)
    • setMethodAt

      public void setMethodAt(Method method, int pos)
    • getMethodAt

      public Method getMethodAt(int pos)
    • getInterfaceNames

      public String[] getInterfaceNames()
    • getInterfaces

      public int[] getInterfaces()
    • getFields

      public Field[] getFields()
    • getAttributes

      public Attribute[] getAttributes()
    • getAnnotationEntries

      public AnnotationEntryGen[] getAnnotationEntries()
    • getConstantPool

      public ConstantPoolGen getConstantPool()
    • setConstantPool

      public void setConstantPool(ConstantPoolGen constant_pool)
    • setClassNameIndex

      public void setClassNameIndex(int class_name_index)
    • setSuperclassNameIndex

      public void setSuperclassNameIndex(int superclass_name_index)
    • getSuperclassNameIndex

      public int getSuperclassNameIndex()
    • getClassNameIndex

      public int getClassNameIndex()
    • addObserver

      public void addObserver(ClassObserver o)
      Add observer for this object.
    • removeObserver

      public void removeObserver(ClassObserver o)
      Remove observer for this object.
    • update

      public void update()
      Call notify() method on all observers. This method is not called automatically whenever the state has changed, but has to be called by the user after he has finished editing the object.
    • clone

      public Object clone()
      Overrides:
      clone in class Object
    • getComparator

      public static BCELComparator getComparator()
      Returns:
      Comparison strategy object
    • setComparator

      public static void setComparator(BCELComparator comparator)
      Parameters:
      comparator - Comparison strategy object
    • equals

      public boolean equals(Object obj)
      Return value as defined by given BCELComparator strategy. By default two ClassGen objects are said to be equal when their class names are equal.
      Overrides:
      equals in class Object
      See Also:
    • hashCode

      public int hashCode()
      Return value as defined by given BCELComparator strategy. By default return the hashcode of the class name.
      Overrides:
      hashCode in class Object
      See Also: