Class JavaClass
java.lang.Object
org.aspectj.apache.bcel.classfile.Modifiers
org.aspectj.apache.bcel.classfile.JavaClass
Represents a Java class, i.e., the data structures, constant pool, fields, methods and commands contained in a Java .class file.
See JVM specification for details.
The intent of this class is to represent a parsed or otherwise existing class file. Those interested in programatically
generating classes should see the ClassGen class.
- Version:
- $Id: JavaClass.java,v 1.22 2009/09/15 19:40:14 aclement Exp $
- Author:
- M. Dahm
- See Also:
-
Field Summary
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
Called by objects that are traversing the nodes of the tree implicitely defined by the contents of a Java class.void
dump
(DataOutputStream file) Dump Java class to output stream in binary format.void
Dump class to a file.void
dump
(OutputStream file) Dump Java class to output stream in binary format.void
Dump class to a file named file_name.Get all interfaces implemented by this JavaClass (transitively).byte[]
getBytes()
int
Field[]
final String
Hunts for a signature attribute on the member and returns its contents.int[]
String[]
Get interfaces directly implemented by this JavaClass.int
getMajor()
getMethod
(Constructor<?> c) Method[]
int
getMinor()
Gets the ClassRepository which holds its definition.final Signature
int
boolean
implementationOf
(JavaClass inter) final boolean
instanceOf
(JavaClass super_class) Equivalent to runtime "instanceof" operator.final boolean
Returns true if this class represents an annotation, i.e.final boolean
final boolean
isClass()
final boolean
isEnum()
Returns true if this class represents an enum typeboolean
final boolean
isNested()
final boolean
isSuper()
void
setAttributes
(Attribute[] attributes) void
setClassName
(String class_name) void
setClassNameIndex
(int class_name_index) void
setConstantPool
(ConstantPool constant_pool) void
void
setFileName
(String file_name) Set File name of class, aka SourceFile attribute valuevoid
setInterfaceNames
(String[] interface_names) void
setInterfaces
(int[] interfaces) void
setMajor
(int major) void
setMethods
(Method[] methods) void
setMinor
(int minor) void
setRepository
(Repository repository) Sets the ClassRepository which loaded the JavaClass.void
setSourceFileName
(String source_file_name) Set absolute path to file this class was read from.void
setSuperclassName
(String superclass_name) void
setSuperclassNameIndex
(int superclass_name_index) toString()
Methods inherited from class org.aspectj.apache.bcel.classfile.Modifiers
getModifiers, isAbstract, isBridge, isFinal, isInterface, isNative, isPrivate, isProtected, isPublic, isStatic, isStrictfp, isSynchronized, isTransient, isVarargs, isVolatile, setModifiers
-
Constructor Details
-
JavaClass
public JavaClass(int classnameIndex, int superclassnameIndex, String filename, int major, int minor, int access_flags, ConstantPool cpool, int[] interfaces, Field[] fields, Method[] methods, Attribute[] attributes)
-
-
Method Details
-
accept
Called by objects that are traversing the nodes of the tree implicitely defined by the contents of a Java class. I.e., the hierarchy of methods, fields, attributes, etc. spawns a tree of objects. -
dump
Dump class to a file.- Parameters:
file
- Output file- Throws:
IOException
-
dump
Dump class to a file named file_name.- Parameters:
file_name
- Output file name- Throws:
IOException
-
getBytes
public byte[] getBytes()- Returns:
- class in binary format
-
dump
Dump Java class to output stream in binary format.- Throws:
IOException
-
dump
Dump Java class to output stream in binary format.- Throws:
IOException
-
getAttributes
-
getAnnotations
-
getClassName
- Returns:
- Class name.
-
getPackageName
- Returns:
- Package name.
-
getClassNameIndex
public int getClassNameIndex() -
getConstantPool
-
getFields
- Returns:
- Fields, i.e., variables of the class. Like the JVM spec mandates for the classfile format, these fields are those specific to this class, and not those of the superclass or superinterfaces.
-
getFileName
- Returns:
- File name of class, aka SourceFile attribute value
-
getInterfaceNames
- Returns:
- Names of implemented interfaces.
-
getInterfaceIndices
public int[] getInterfaceIndices()- Returns:
- Indices in constant pool of implemented interfaces.
-
getMajor
public int getMajor() -
getMethods
- Returns:
- Methods of the class.
-
getMethod
- Returns:
- A org.aspectj.apache.bcel.classfile.Method corresponding to java.lang.reflect.Method if any
-
getMethod
-
getField
-
getMinor
public int getMinor()- Returns:
- Minor number of class file version.
-
getSourceFileName
- Returns:
- sbsolute path to file where this class was read from
-
getSuperclassName
- Returns:
- Superclass name.
-
getSuperclassNameIndex
public int getSuperclassNameIndex()- Returns:
- Class name index.
-
setAttributes
- Parameters:
attributes
- .
-
setClassName
- Parameters:
class_name
- .
-
setClassNameIndex
public void setClassNameIndex(int class_name_index) - Parameters:
class_name_index
- .
-
setConstantPool
- Parameters:
constant_pool
- .
-
setFields
- Parameters:
fields
- .
-
setFileName
Set File name of class, aka SourceFile attribute value -
setInterfaceNames
- Parameters:
interface_names
- .
-
setInterfaces
public void setInterfaces(int[] interfaces) - Parameters:
interfaces
- .
-
setMajor
public void setMajor(int major) -
setMethods
-
setMinor
public void setMinor(int minor) -
setSourceFileName
Set absolute path to file this class was read from. -
setSuperclassName
- Parameters:
superclass_name
- .
-
setSuperclassNameIndex
public void setSuperclassNameIndex(int superclass_name_index) - Parameters:
superclass_name_index
- .
-
toString
-
isSuper
public final boolean isSuper() -
isClass
public final boolean isClass() -
isAnonymous
public final boolean isAnonymous() -
isNested
public final boolean isNested() -
isAnnotation
public final boolean isAnnotation()Returns true if this class represents an annotation, i.e. it was a 'public @interface blahblah' declaration -
isEnum
public final boolean isEnum()Returns true if this class represents an enum type -
getRepository
Gets the ClassRepository which holds its definition. By default this is the same as SyntheticRepository.getInstance(); -
setRepository
Sets the ClassRepository which loaded the JavaClass. Should be called immediately after parsing is done. -
instanceOf
Equivalent to runtime "instanceof" operator.- Returns:
- true if this JavaClass is derived from teh super class
-
implementationOf
- Returns:
- true, if clazz is an implementation of interface inter
-
getSuperClass
- Returns:
- the superclass for this JavaClass object, or null if this is java.lang.Object
-
getSuperClasses
- Returns:
- list of super classes of this class in ascending order, i.e., java.lang.Object is always the last element
-
getInterfaces
Get interfaces directly implemented by this JavaClass. -
getAllInterfaces
Get all interfaces implemented by this JavaClass (transitively). -
getGenericSignature
Hunts for a signature attribute on the member and returns its contents. So where the 'regular' signature may be Ljava/util/Vector; the signature attribute will tell us e.g. "invalid input: '<'E:>Ljava/lang/Object". We can learn the type variable names, their bounds, and the true superclass and superinterface types (including any parameterizations) Coded for performance - searches for the attribute only when requested - only searches for it once. -
isGeneric
public boolean isGeneric() -
getSignatureAttribute
-