org.apache.bcel.generic
Class ClassGen

java.lang.Object
  extended by org.apache.bcel.classfile.AccessFlags
      extended by org.apache.bcel.generic.ClassGen
All Implemented Interfaces:
Serializable, 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).

Version:
$Id: ClassGen.java 386056 2006-03-15 11:31:56Z tcurdt $
See Also:
JavaClass, Serialized Form

Field Summary
 
Fields inherited from class org.apache.bcel.classfile.AccessFlags
access_flags
 
Constructor Summary
ClassGen(JavaClass clazz)
          Initialize with existing class.
ClassGen(String class_name, String super_class_name, String file_name, int access_flags, String[] interfaces)
          Convenience constructor to set up some important values initially.
ClassGen(String class_name, String super_class_name, String file_name, int access_flags, String[] interfaces, ConstantPoolGen cp)
          Convenience constructor to set up some important values initially.
 
Method Summary
 void addAttribute(Attribute a)
          Add an attribute to this class.
 void addEmptyConstructor(int access_flags)
          Convenience method.
 void addField(Field f)
          Add a field to this class.
 void addInterface(String name)
          Add an interface to this class, i.e., this class has to implement it.
 void addMethod(Method m)
          Add a method to this class.
 void addObserver(ClassObserver o)
          Add observer for this object.
 Object clone()
           
 boolean containsField(Field f)
           
 Field containsField(String name)
           
 Method containsMethod(String name, String signature)
           
 boolean equals(Object obj)
          Return value as defined by given BCELComparator strategy.
 Attribute[] getAttributes()
           
 String getClassName()
           
 int getClassNameIndex()
           
static BCELComparator getComparator()
           
 ConstantPoolGen getConstantPool()
           
 Field[] getFields()
           
 String getFileName()
           
 String[] getInterfaceNames()
           
 int[] getInterfaces()
           
 JavaClass getJavaClass()
           
 int getMajor()
           
 Method getMethodAt(int pos)
           
 Method[] getMethods()
           
 int getMinor()
           
 String getSuperclassName()
           
 int getSuperclassNameIndex()
           
 int hashCode()
          Return value as defined by given BCELComparator strategy.
 void removeAttribute(Attribute a)
          Remove an attribute from this class.
 void removeField(Field f)
          Remove a field to this class.
 void removeInterface(String name)
          Remove an interface from this class.
 void removeMethod(Method m)
          Remove a method from this class.
 void removeObserver(ClassObserver o)
          Remove observer for this object.
 void replaceField(Field old, Field new_)
          Replace given field with new one.
 void replaceMethod(Method old, Method new_)
          Replace given method with new one.
 void setClassName(String name)
           
 void setClassNameIndex(int class_name_index)
           
static void setComparator(BCELComparator comparator)
           
 void setConstantPool(ConstantPoolGen constant_pool)
           
 void setMajor(int major)
          Set major version number of class file, default value is 45 (JDK 1.1)
 void setMethodAt(Method method, int pos)
           
 void setMethods(Method[] methods)
           
 void setMinor(int minor)
          Set minor version number of class file, default value is 3 (JDK 1.1)
 void setSuperclassName(String name)
           
 void setSuperclassNameIndex(int superclass_name_index)
           
 void update()
          Call notify() method on all observers.
 
Methods inherited from class org.apache.bcel.classfile.AccessFlags
getAccessFlags, getModifiers, isAbstract, isAbstract, isAnnotation, isAnnotation, isEnum, isEnum, isFinal, isFinal, isInterface, isInterface, isNative, isNative, isPrivate, isPrivate, isProtected, isProtected, isPublic, isPublic, isStatic, isStatic, isStrictfp, isStrictfp, isSynchronized, isSynchronized, isSynthetic, isSynthetic, isTransient, isTransient, isVolatile, isVolatile, setAccessFlags, setModifiers
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ClassGen

public ClassGen(String class_name,
                String super_class_name,
                String file_name,
                int access_flags,
                String[] interfaces,
                ConstantPoolGen cp)
Convenience constructor to set up some important values initially.

Parameters:
class_name - fully qualified class name
super_class_name - fully qualified superclass name
file_name - source file name
access_flags - access qualifiers
interfaces - implemented interfaces
cp - constant pool to use

ClassGen

public ClassGen(String class_name,
                String super_class_name,
                String file_name,
                int access_flags,
                String[] interfaces)
Convenience constructor to set up some important values initially.

Parameters:
class_name - fully qualified class name
super_class_name - fully qualified superclass name
file_name - source file name
access_flags - access qualifiers
interfaces - implemented interfaces

ClassGen

public ClassGen(JavaClass clazz)
Initialize with existing class.

Parameters:
clazz - JavaClass object (e.g. read from file)
Method Detail

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

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()

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:
Object.equals(java.lang.Object)

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:
Object.hashCode()


Copyright © 2002-2006 Apache Software Foundation. All Rights Reserved.