org.apache.bcel.generic

Class ClassGen

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 $

Author: M. Dahm

See Also: JavaClass

Field Summary
Listattribute_vec
Stringclass_name
intclass_name_index
ConstantPoolGencp
Listfield_vec
Stringfile_name
Listinterface_vec
intmajor
Listmethod_vec
intminor
ArrayListobservers
intsuperclass_name_index
Stringsuper_class_name
static BCELComparator_cmp
Constructor Summary
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.
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(JavaClass clazz)
Initialize with existing class.
Method Summary
voidaddAttribute(Attribute a)
Add an attribute to this class.
voidaddEmptyConstructor(int access_flags)
Convenience method.
voidaddField(Field f)
Add a field to this class.
voidaddInterface(String name)
Add an interface to this class, i.e., this class has to implement it.
voidaddMethod(Method m)
Add a method to this class.
voidaddObserver(ClassObserver o)
Add observer for this object.
Objectclone()
booleancontainsField(Field f)
FieldcontainsField(String name)
MethodcontainsMethod(String name, String signature)
booleanequals(Object obj)
Return value as defined by given BCELComparator strategy.
Attribute[]getAttributes()
StringgetClassName()
intgetClassNameIndex()
static BCELComparatorgetComparator()
ConstantPoolGengetConstantPool()
Field[]getFields()
StringgetFileName()
String[]getInterfaceNames()
int[]getInterfaces()
JavaClassgetJavaClass()
intgetMajor()
MethodgetMethodAt(int pos)
Method[]getMethods()
intgetMinor()
StringgetSuperclassName()
intgetSuperclassNameIndex()
inthashCode()
Return value as defined by given BCELComparator strategy.
voidremoveAttribute(Attribute a)
Remove an attribute from this class.
voidremoveField(Field f)
Remove a field to this class.
voidremoveInterface(String name)
Remove an interface from this class.
voidremoveMethod(Method m)
Remove a method from this class.
voidremoveObserver(ClassObserver o)
Remove observer for this object.
voidreplaceField(Field old, Field new_)
Replace given field with new one.
voidreplaceMethod(Method old, Method new_)
Replace given method with new one.
voidsetClassName(String name)
voidsetClassNameIndex(int class_name_index)
static voidsetComparator(BCELComparator comparator)
voidsetConstantPool(ConstantPoolGen constant_pool)
voidsetMajor(int major)
Set major version number of class file, default value is 45 (JDK 1.1)
voidsetMethodAt(Method method, int pos)
voidsetMethods(Method[] methods)
voidsetMinor(int minor)
Set minor version number of class file, default value is 3 (JDK 1.1)
voidsetSuperclassName(String name)
voidsetSuperclassNameIndex(int superclass_name_index)
voidupdate()
Call notify() method on all observers.

Field Detail

attribute_vec

private List attribute_vec

class_name

private String class_name

class_name_index

private int class_name_index

cp

private ConstantPoolGen cp

field_vec

private List field_vec

file_name

private String file_name

interface_vec

private List interface_vec

major

private int major

method_vec

private List method_vec

minor

private int minor

observers

private ArrayList observers

superclass_name_index

private int superclass_name_index

super_class_name

private String super_class_name

_cmp

private static BCELComparator _cmp

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

addAttribute

public void addAttribute(Attribute a)
Add an attribute to this class.

Parameters: a attribute 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

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)

addMethod

public void addMethod(Method m)
Add a method to this class.

Parameters: m method to add

addObserver

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

clone

public Object clone()

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

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.

See Also: java.lang.Object#equals(java.lang.Object)

getAttributes

public Attribute[] getAttributes()

getClassName

public String getClassName()

getClassNameIndex

public int getClassNameIndex()

getComparator

public static BCELComparator getComparator()

Returns: Comparison strategy object

getConstantPool

public ConstantPoolGen getConstantPool()

getFields

public Field[] getFields()

getFileName

public String getFileName()

getInterfaceNames

public String[] getInterfaceNames()

getInterfaces

public int[] getInterfaces()

getJavaClass

public JavaClass getJavaClass()

Returns: the (finally) built up Java class object.

getMajor

public int getMajor()

Returns: major version number of class file

getMethodAt

public Method getMethodAt(int pos)

getMethods

public Method[] getMethods()

getMinor

public int getMinor()

Returns: minor version number of class file

getSuperclassName

public String getSuperclassName()

getSuperclassNameIndex

public int getSuperclassNameIndex()

hashCode

public int hashCode()
Return value as defined by given BCELComparator strategy. By default return the hashcode of the class name.

See Also: java.lang.Object#hashCode()

removeAttribute

public void removeAttribute(Attribute a)
Remove an attribute from this class.

Parameters: a attribute to remove

removeField

public void removeField(Field f)
Remove a field to this class.

Parameters: f field to remove

removeInterface

public void removeInterface(String name)
Remove an interface from this class.

Parameters: name interface to remove (fully qualified name)

removeMethod

public void removeMethod(Method m)
Remove a method from this class.

Parameters: m method to remove

removeObserver

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

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.

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.

setClassName

public void setClassName(String name)

setClassNameIndex

public void setClassNameIndex(int class_name_index)

setComparator

public static void setComparator(BCELComparator comparator)

Parameters: comparator Comparison strategy object

setConstantPool

public void setConstantPool(ConstantPoolGen constant_pool)

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

setMethodAt

public void setMethodAt(Method method, int pos)

setMethods

public void setMethods(Method[] methods)

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

setSuperclassName

public void setSuperclassName(String name)

setSuperclassNameIndex

public void setSuperclassNameIndex(int superclass_name_index)

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.