Package org.apache.bcel.generic
Class ClassGen
java.lang.Object
org.apache.bcel.classfile.AccessFlags
org.apache.bcel.generic.ClassGen
- All Implemented Interfaces:
Cloneable
Template class for building up a java class. May be initialized with an existing Java class (file).
- See Also:
-
Field Summary
Fields inherited from class org.apache.bcel.classfile.AccessFlags
access_flags
-
Constructor Summary
ConstructorDescriptionClassGen
(String className, String superClassName, String fileName, int accessFlags, String[] interfaces) Convenience constructor to set up some important values initially.ClassGen
(String className, String superClassName, String fileName, int accessFlags, String[] interfaces, ConstantPoolGen cp) Convenience constructor to set up some important values initially.Constructs a new instance from an existing class. -
Method Summary
Modifier and TypeMethodDescriptionvoid
void
Add an attribute to this class.void
addEmptyConstructor
(int accessFlags) Convenience method.void
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
Add a method to this class.void
Add observer for this object.clone()
containsField
(String name) boolean
containsMethod
(String name, String signature) boolean
Return value as defined by given BCELComparator strategy.int
static BCELComparator
<ClassGen> Field[]
String[]
int[]
int
getMajor()
getMethodAt
(int pos) Method[]
int
getMinor()
int
int
hashCode()
Return value as defined by given BCELComparator strategy.void
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
Remove a method from this class.void
Remove observer for this object.void
replaceField
(Field old, Field newField) Replace given field with new one.void
replaceMethod
(Method old, Method newMethod) Replace given method with new one.void
setClassName
(String name) void
setClassNameIndex
(int classNameIndex) static void
setComparator
(BCELComparator<ClassGen> comparator) void
setConstantPool
(ConstantPoolGen constantPool) void
setMajor
(int major) Sets 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) Sets minor version number of class file, default value is 3 (JDK 1.1)void
setSuperclassName
(String name) void
setSuperclassNameIndex
(int superclassNameIndex) 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, isVarArgs, isVarArgs, isVolatile, isVolatile, setAccessFlags, setModifiers
-
Constructor Details
-
ClassGen
Constructs a new instance from an existing class.- Parameters:
clazz
- JavaClass object (e.g. read from file)
-
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 namesuperClassName
- fully qualified superclass namefileName
- source file nameaccessFlags
- access qualifiersinterfaces
- implemented interfaces
-
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 namesuperClassName
- fully qualified superclass namefileName
- source file nameaccessFlags
- access qualifiersinterfaces
- implemented interfacescp
- constant pool to use
-
-
Method Details
-
getComparator
- Returns:
- Comparison strategy object
-
setComparator
- Parameters:
comparator
- Comparison strategy object
-
addAnnotationEntry
-
addAttribute
Add an attribute to this class.- Parameters:
a
- attribute to add
-
addEmptyConstructor
Convenience method. Add an empty constructor to this class that does nothing but calling super().- Parameters:
accessFlags
- rights for constructor
-
addField
Add a field to this class.- Parameters:
f
- field to add
-
addInterface
Add an interface to this class, i.e., this class has to implement it.- Parameters:
name
- interface to implement (fully qualified class name)
-
addMethod
Add a method to this class.- Parameters:
m
- method to add
-
addObserver
Add observer for this object. -
clone
-
containsField
-
containsField
- Returns:
- field object with given name, or null
-
containsMethod
- Returns:
- method object with given name and signature, or null
-
equals
Return value as defined by given BCELComparator strategy. By default two ClassGen objects are said to be equal when their class names are equal. -
getAnnotationEntries
-
getAttributes
-
getClassName
-
getClassNameIndex
-
getConstantPool
-
getFields
-
getFileName
-
getInterfaceNames
-
getInterfaces
-
getJavaClass
- Returns:
- the (finally) built up Java class object.
-
getMajor
- Returns:
- major version number of class file
-
getMethodAt
-
getMethods
-
getMinor
- Returns:
- minor version number of class file
-
getSuperclassName
-
getSuperclassNameIndex
-
hashCode
Return value as defined by given BCELComparator strategy. By default return the hash code of the class name. -
removeAttribute
Remove an attribute from this class.- Parameters:
a
- attribute to remove
-
removeField
Remove a field to this class.- Parameters:
f
- field to remove
-
removeInterface
Remove an interface from this class.- Parameters:
name
- interface to remove (fully qualified name)
-
removeMethod
Remove a method from this class.- Parameters:
m
- method to remove
-
removeObserver
Remove observer for this object. -
replaceField
Replace given field with new one. If the old one does not exist add the new_ field to the class anyway. -
replaceMethod
Replace given method with new one. If the old one does not exist add the newMethod method to the class anyway. -
setClassName
-
setClassNameIndex
-
setConstantPool
-
setMajor
Sets major version number of class file, default value is 45 (JDK 1.1)- Parameters:
major
- major version number
-
setMethodAt
-
setMethods
-
setMinor
Sets minor version number of class file, default value is 3 (JDK 1.1)- Parameters:
minor
- minor version number
-
setSuperclassName
-
setSuperclassNameIndex
-
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 they have finished editing the object.
-