public class ClassImpl extends MemberImpl implements MClass, JClassRef, JClassRefContext
Implementation of JClass and MClass.
Modifier and Type | Field and Description |
---|---|
static int |
INITIALIZING |
static int |
LOADED |
static int |
NEW |
static int |
POPULATING |
static int |
UNINITIALIZED |
static int |
UNPOPULATED |
NO_ANNOTATION, NO_CLASS, NO_COMMENT, NO_CONSTRUCTOR, NO_FIELD, NO_METHOD, NO_NODE, NO_PACKAGE, NO_PARAMETER, NO_PROPERTY
Constructor and Description |
---|
ClassImpl(String packageName,
String simpleName,
ElementContext ctx,
String[] importSpecs) |
ClassImpl(String packageName,
String simpleName,
ElementContext ctx,
String[] importSpecs,
JamClassPopulator populator) |
Modifier and Type | Method and Description |
---|---|
void |
accept(JVisitor visitor)
Accepts the given visitor.
|
void |
accept(MVisitor visitor) |
void |
addInterface(JClass interf)
Adds to the list of interfaces implemented by this class.
|
void |
addInterface(String qcName)
Adds to the list of interfaces implemented by this class.
|
void |
addInterfaceUnqualified(String ucname)
Adds to the list of interfaces implemented by this class.
|
MConstructor |
addNewConstructor()
Creates a new constructor, adds it to this class, and returns it.
|
JProperty |
addNewDeclaredProperty(String name,
JMethod getter,
JMethod setter) |
MField |
addNewField()
Creates a new field, adds it to this class, and returns it.
|
MClass |
addNewInnerClass(String name) |
MMethod |
addNewMethod()
Creates a new method, adds it to this class, and returns it.
|
JProperty |
addNewProperty(String name,
JMethod getter,
JMethod setter) |
void |
ensureLoaded() |
JClass |
forName(String name)
Shorthand for myClass.getClassLoader().loadClass(name)
|
JAnnotation[] |
getAllJavadocTags() |
JAnnotation |
getAnnotation(Class proxyClass)
Returns the JAnnotation which is being proxied by the given subclass
of TypedAnnotationProxyBase, or null if no such annotation exists.
|
JAnnotation |
getAnnotation(String named)
Returns the annotation that represents the named 175 annotation
or javadoc tag on this elements.
|
Object |
getAnnotationProxy(Class proxyClass) |
JAnnotation[] |
getAnnotations()
Returns the metadata JAnnotations that are associated with
this abstraction.
|
JAnnotationValue |
getAnnotationValue(String valueId)
Shortcut method which returns a given annotation value.
|
JClass |
getArrayComponentType()
Returns the Class representing the component type of an array.
|
int |
getArrayDimensions()
If this JClass represents an array type (isArray() == true),
returns the number of dimensions in the array.
|
JClass[] |
getClasses()
Returns an unordered array containing the inner classes for this class.
|
JComment |
getComment()
Returns the comment associated with this abstraction.
|
JConstructor[] |
getConstructors()
Returns an unordered array containing Constructor objects reflecting
all the public constructors of the class represented by this Class
object.
|
JPackage |
getContainingPackage()
Returns a JPackage which represents the package which contains
this JClass.
|
JField[] |
getDeclaredFields()
Returns an unordered array of Field objects reflecting all the fields
declared by the class or interface represented by this Class
object.
|
JMethod[] |
getDeclaredMethods()
Returns an unordered array of Method objects reflecting all the
methods declared by the class or interface represented by this Class
object.
|
JProperty[] |
getDeclaredProperties()
Like getProperties(), but only considers methods explicitly declared
on this class in identifying the properties.
|
String |
getFieldDescriptor()
Returns the name of this member in the format described in
section 4.3.2 of the VM spec, 'Field Descriptors.' This is the
same nasty format returned by java.lang.Class.getName(), and is
the format you need to use in calls to Class.forName().
|
JField[] |
getFields()
REVIEW should we consider renaming this to getAllFields()? I
think this makes it more clear but is not consistent with
java.lang.Class.
|
JClass[] |
getImportedClasses()
Returns an unordered array of classes that were explicitly imported by
this class using an import statement.
|
JPackage[] |
getImportedPackages()
Returns an unordered set of JPackages which are imported by this class
using a package import statement (i.e.
|
String[] |
getImportSpecs() |
JClass[] |
getInterfaces()
Returns an unordered array containing all of the interfaces directly
implemented by this class.
|
JMethod[] |
getMethods()
REVIEW should we consider renaming this to getAllMethods()? I
think this makes it more clear but is not consistent with
java.lang.Class.
|
int |
getModifiers()
Returns the modifiers specifier.
|
MConstructor[] |
getMutableConstructors()
Returns the constructors declared on this class.
|
MField[] |
getMutableFields()
Returns the fields declared on this class.
|
MMethod[] |
getMutableMethods()
Returns the EditableMethods declared on this class.
|
String |
getPackageName() |
Class |
getPrimitiveClass()
If this JClass represents a primitive (isPrimitiveType() returns true),
this method returns the java.lang.Class representing the class of
the primitive.
|
JProperty[] |
getProperties()
Returns a representation of a java bean property as detailed in section
8.3 of the Java Beans specification, 'Design Patterns for Properties.'
A JProperty can be thought of as a union of a getter method and
corresponding setter method, although only one of these is required
(view-only and write-only properties are returned).
|
String |
getQualifiedName()
Returns a qualified name for this abstraction.
|
JClass |
getRefClass() |
JSourcePosition |
getSourcePosition()
Returns an object describing the source file position of this
elements, or null if the position is unknown on not applicable.
|
JClass |
getSuperclass()
Returns the Class representing the superclass of the entity
(class, interface, primitive type or void) represented by this
Class.
|
boolean |
isAbstract()
Return true if this class is abstract.
|
boolean |
isAnnotationType()
Returns true if this JClass represents a JSR175 annotation type.
|
boolean |
isArrayType()
Returns true if this JClass represents an array type.
|
boolean |
isAssignableFrom(JClass arg)
Determines if the class or interface represented by this Class
object is either the same as, or is a superclass or
superinterface of, the class or interface represented by the
specified Class parameter.
|
boolean |
isBuiltinType()
Returns true if this class is a builtin type.
|
boolean |
isEnumType()
Returns true if this class is an enumerated type.
|
boolean |
isFinal()
Return true if this class is final.
|
boolean |
isInterface()
Returns true if this JClass represents an interface.
|
boolean |
isObjectType()
Returns true if this JClass represents java.lang.Object.
|
boolean |
isPrimitiveType()
Return true if this JClass represents primitive type (int, long,
double, and so forth).
|
boolean |
isStatic()
Return true if this class is static.
|
boolean |
isUnresolvedType()
Returns true if a backing entity for this class could not be
resolved.
|
boolean |
isVoidType()
Returns true if this JClass represents the void type.
|
void |
removeConstructor(MConstructor constr)
Removes a constructor from this class.
|
void |
removeDeclaredProperty(JProperty p) |
void |
removeField(MField field)
Removes the given field from this class.
|
void |
removeInnerClass(MClass clazz) |
void |
removeInterface(JClass interf)
Removes an interface from the list of interfaces implemented by
this class.
|
void |
removeInterface(String qcname)
Removes a named interface from the list of interfaces implemented by
this class.
|
void |
removeMethod(MMethod method)
Removes the given method from this class.
|
void |
removeProperty(JProperty p) |
void |
setIsAnnotationType(boolean b) |
void |
setIsEnumType(boolean b) |
void |
setIsInterface(boolean b) |
void |
setSimpleName(String name) |
void |
setState(int state) |
void |
setSuperclass(JClass clazz)
Sets the class which this class extends.
|
void |
setSuperclass(String qualifiedClassName)
Sets the class which this class extends.
|
void |
setSuperclassUnqualified(String unqualifiedClassName)
Sets the name of this class that this class extends.
|
static void |
validateClassName(String className)
Throws an IllegalArgument exception if the given string is not a valid
class name.
|
getContainingClass, isPackagePrivate, isPrivate, isProtected, isPublic, setModifiers
addAnnotationForProxy, addLiteralAnnotation, createComment, findOrCreateAnnotation, getEditableProxy, getMutableAnnotation, getMutableAnnotations, getMutableComment, removeAnnotation, removeComment
compareTo, createSourcePosition, defaultName, equals, getArtifact, getClassLoader, getContext, getMutableSourcePosition, getParent, getSimpleName, hashCode, removeSourcePosition, setArtifact, toString
setModifiers
addLiteralAnnotation, createComment, findOrCreateAnnotation, getMutableAnnotation, getMutableAnnotations, getMutableComment, removeComment
createSourcePosition, getClassLoader, getMutableSourcePosition, removeSourcePosition, setArtifact
equals, getClassLoader, getContainingClass
isPackagePrivate, isPrivate, isProtected, isPublic
getArtifact, getParent, getSimpleName, toString
getClassLoader
public static final int NEW
public static final int UNPOPULATED
public static final int POPULATING
public static final int UNINITIALIZED
public static final int INITIALIZING
public static final int LOADED
public ClassImpl(String packageName, String simpleName, ElementContext ctx, String[] importSpecs, JamClassPopulator populator)
public ClassImpl(String packageName, String simpleName, ElementContext ctx, String[] importSpecs)
public JPackage getContainingPackage()
JClass
Returns a JPackage which represents the package which contains this JClass.
getContainingPackage
in interface JClass
public JClass getSuperclass()
JClass
Returns the Class representing the superclass of the entity (class, interface, primitive type or void) represented by this Class. If this Class represents either the Object class, an interface, a primitive type, or void, then null is returned. If this object represents an array class then the Class object representing the Object class is returned.
getSuperclass
in interface JClass
public JClass[] getInterfaces()
JClass
getInterfaces
in interface JClass
public JField[] getFields()
JClass
REVIEW should we consider renaming this to getAllFields()? I think this makes it more clear but is not consistent with java.lang.Class.
Returns an unordered array containing Field objects reflecting all the accessible public fields of the class or interface represented by this Class object. The elements2 in the array returned are not sorted and are not in any particular order. This method returns an array of length 0 if the class or interface has no accessible public fields, or if it represents an array class, a primitive type, or void.
Specifically, if this JClass object represents a class, this method returns the public fields of this class and of all its superclasses. If this JClass object represents an interface, this method returns the fields of this interface and of all its superinterfaces.
The implicit length field for array class is not reflected by this method. User code should use the methods of class Array to manipulate arrays.
Note that no guarantees are made about the ordering of fields in this array.
See The Java Language Specification, sections 8.2 and 8.3.
public JField[] getDeclaredFields()
JClass
Returns an unordered array of Field objects reflecting all the fields declared by the class or interface represented by this Class object. This includes public, protected, default (package) access, and private fields, but excludes inherited fields. The elements2 in the array returned are not sorted and are not in any particular order. This method returns an array of length 0 if the class or interface declares no fields, or if this Class object represents a primitive type, an array class, or void.
See The Java Language Specification, sections 8.2 and 8.3.
getDeclaredFields
in interface JClass
public JMethod[] getMethods()
JClass
REVIEW should we consider renaming this to getAllMethods()? I think this makes it more clear but is not consistent with java.lang.Class.
Returns an array containing Method objects reflecting all the public member methods of the class or interface represented by this Class object, including those declared by the class or interface and and those inherited from superclasses and superinterfaces. The elements2 in the array returned are not sorted and are not in any particular order. This method returns an array of length 0 if this Class object represents a class or interface that has no public member methods, or if this Class object represents an array class, primitive type, or void.
The class initialization method
getMethods
in interface JClass
public JProperty[] getProperties()
JClass
getProperties
in interface JClass
public JProperty[] getDeclaredProperties()
JClass
Like getProperties(), but only considers methods explicitly declared on this class in identifying the properties.
getDeclaredProperties
in interface JClass
public JMethod[] getDeclaredMethods()
JClass
Returns an unordered array of Method objects reflecting all the
methods declared by the class or interface represented by this Class
object. This includes public, protected, default (package)
access, and private methods, but excludes inherited methods. The
elements2 in the array returned are not sorted and are not in any
particular order. This method returns an array of length 0 if the
class or interface declares no methods, or if this Class object
represents a primitive type, an array class, or void. The class
initialization method
See The Java Language Specification, section 8.2.
getDeclaredMethods
in interface JClass
public JConstructor[] getConstructors()
JClass
Returns an unordered array containing Constructor objects reflecting all the public constructors of the class represented by this Class object. An array of length 0 is returned if the class has no public constructors, or if the class is an array class, or if the class reflects a primitive type or void.
getConstructors
in interface JClass
public boolean isInterface()
JClass
Returns true if this JClass represents an interface.
isInterface
in interface JClass
public boolean isAnnotationType()
JClass
Returns true if this JClass represents a JSR175 annotation type.
isAnnotationType
in interface JClass
public boolean isEnumType()
JClass
Returns true if this class is an enumerated type.
isEnumType
in interface JClass
public int getModifiers()
JMember
Returns the modifiers specifier. This is a bit field exactly like those returned by java.lang.Class.getModifiers() and can be manipulated using java.lang.reflect.Modifier in the same way.
getModifiers
in interface JMember
getModifiers
in class MemberImpl
public boolean isFinal()
JClass
public boolean isStatic()
JClass
public boolean isAbstract()
JClass
isAbstract
in interface JClass
public boolean isAssignableFrom(JClass arg)
JClass
Determines if the class or interface represented by this Class object is either the same as, or is a superclass or superinterface of, the class or interface represented by the specified Class parameter. It returns true if so; otherwise it returns false. If this Class object represents a primitive type, this method returns true if the specified Class parameter is exactly this Class object; otherwise it returns false.
Specifically, this method tests whether the type represented by the specified Class parameter can be converted to the type represented by this Class object via an identity conversion or via a widening reference conversion. See The Java Language Specification, sections 5.1.1 and 5.1.4 , for details.
isAssignableFrom
in interface JClass
public JClass[] getClasses()
JClass
Returns an unordered array containing the inner classes for this class. The array contains JClass objects representing all the public classes and interfaces that are members of the class represented by this JClass. This includes public class and interface members inherited from superclasses and public class and interface members declared by the class. This method returns an array of length 0 if this Class object has no public member classes or interfaces. This method also returns an array of length 0 if this JClass object represents a primitive type, an array class, or void.
Note that no guarantees are made about the ordering of classes in this array.
getClasses
in interface JClass
public String getFieldDescriptor()
JClass
Returns the name of this member in the format described in
section 4.3.2 of the VM spec, 'Field Descriptors.' This is the
same nasty format returned by java.lang.Class.getName(), and is
the format you need to use in calls to Class.forName(). For
example, the ClassfileName of the class of a two-dimensional
array of strings is [[Ljava.lang.String;
. For
details, see
http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html
getFieldDescriptor
in interface JClass
public JClass forName(String name)
JClass
public JPackage[] getImportedPackages()
JClass
Returns an unordered set of JPackages which are imported by this class
using a package import statement (i.e. with the '*' wildcard), as well as
the containing packages of all of the JClasses returned by
getImportedClasses()
.
Note that this is an optional operation; if the source for the class is not available (i.e. this JClass is backed by a java.lang.Class), then this method will return an array of length 0.
getImportedPackages
in interface JClass
public JClass[] getImportedClasses()
JClass
Returns an unordered array of classes that were explicitly imported by this class using an import statement. It does not include any classes that might be imported via package imports (i.e. with the '*' wildcard), nor does it include any classes that are simply used via fully-qualified name in the body of this class.
Note that this is an optional operation; if the source for the class is not available (i.e. this JClass is backed by a java.lang.Class), then this method will return an array of length 0.
getImportedClasses
in interface JClass
public void accept(JVisitor visitor)
JElement
Accepts the given visitor.
public void setSimpleName(String name)
setSimpleName
in interface MElement
setSimpleName
in class ElementImpl
public Class getPrimitiveClass()
JClass
If this JClass represents a primitive (isPrimitiveType() returns true), this method returns the java.lang.Class representing the class of the primitive. For example, JClass representing an integer returns the equivalent of 'int.class' or 'java.lang.Integer.type.'
getPrimitiveClass
in interface JClass
public boolean isPrimitiveType()
JClass
isPrimitiveType
in interface JClass
public boolean isBuiltinType()
JClass
isPrimitive(), isArray(),
isVoid(),
or isUnresolved..isBuiltinType
in interface JClass
public boolean isVoidType()
JClass
Returns true if this JClass represents the void type.
isVoidType
in interface JClass
public boolean isUnresolvedType()
JClass
Returns true if a backing entity for this class could not be resolved. This will be true, for example, of the JClass which you get when requesting a method's return type when no class for that type can be found. In this case, the JClass will be have only a name - all other properties will be null/empty.
isUnresolvedType
in interface JClass
public boolean isObjectType()
JClass
Returns true if this JClass represents java.lang.Object.
isObjectType
in interface JClass
public boolean isArrayType()
JClass
Returns true if this JClass represents an array type.
isArrayType
in interface JClass
public JClass getArrayComponentType()
JClass
Returns the Class representing the component type of an array. If this JClass does not represent an array class this method returns null.
Note that this method differs substantially from
java.lang.Class.getComponentType()
in the way it
treats multidimensional arrays. Specifically, let
fooArrayClass
be the class of an n dimensional array
of class foo
for n > 2. For the java.lang.Class
representation of fooArrayClass
,
getComponentType()
will return a java.lang.Class for
an (n-1)-dimensional array of foo
s. By contrast,
the JClass representation of fooArrayClass
will
always simply return a JClass representing foo
for
any value of n > 1.
In other words, this method always returns the 'core' type of
the array, effectively hiding away all of the intermediary array
types. Given that JClass provides the additional
getArrayDimensions
facility, it is felt that this is
a much easier convention for tool authors to work with.
getArrayComponentType
in interface JClass
public int getArrayDimensions()
JClass
If this JClass represents an array type (isArray() == true), returns the number of dimensions in the array. Otherwise returns zero.
getArrayDimensions
in interface JClass
public JAnnotation[] getAnnotations()
JAnnotatedElement
Returns the metadata JAnnotations that are associated with this abstraction. Returns an empty array if there are no annotations.
getAnnotations
in interface JAnnotatedElement
getAnnotations
in class AnnotatedElementImpl
public JAnnotation getAnnotation(Class proxyClass)
JAnnotatedElement
Returns the JAnnotation which is being proxied by the given subclass
of TypedAnnotationProxyBase, or null if no such annotation exists. If it
does exist, the getProxy()
method on the returned
object is guaranteed to return be an instance of the proxyClass.
getAnnotation
in interface JAnnotatedElement
getAnnotation
in class AnnotatedElementImpl
public JAnnotation getAnnotation(String named)
JAnnotatedElement
Returns the annotation that represents the named 175 annotation or javadoc tag on this elements.
getAnnotation
in interface JAnnotatedElement
getAnnotation
in class AnnotatedElementImpl
public JAnnotationValue getAnnotationValue(String valueId)
JAnnotatedElement
getAnnotationValue
in interface JAnnotatedElement
getAnnotationValue
in class AnnotatedElementImpl
public Object getAnnotationProxy(Class proxyClass)
getAnnotationProxy
in interface JAnnotatedElement
getAnnotationProxy
in class AnnotatedElementImpl
public JComment getComment()
JAnnotatedElement
Returns the comment associated with this abstraction. Returns null if it has no comment.
getComment
in interface JAnnotatedElement
getComment
in class AnnotatedElementImpl
public JAnnotation[] getAllJavadocTags()
getAllJavadocTags
in interface JAnnotatedElement
getAllJavadocTags
in class AnnotatedElementImpl
public JSourcePosition getSourcePosition()
JElement
getSourcePosition
in interface JElement
getSourcePosition
in class ElementImpl
public void setSuperclass(String qualifiedClassName)
MClass
setSuperclass
in interface MClass
public void setSuperclassUnqualified(String unqualifiedClassName)
MClass
setSuperclassUnqualified
in interface MClass
public void setSuperclass(JClass clazz)
MClass
setSuperclass
in interface MClass
public void addInterface(JClass interf)
MClass
addInterface
in interface MClass
public void addInterface(String qcName)
MClass
addInterface
in interface MClass
public void addInterfaceUnqualified(String ucname)
MClass
addInterfaceUnqualified
in interface MClass
public void removeInterface(JClass interf)
MClass
removeInterface
in interface MClass
public void removeInterface(String qcname)
MClass
removeInterface
in interface MClass
public MConstructor addNewConstructor()
MClass
addNewConstructor
in interface MClass
public void removeConstructor(MConstructor constr)
MClass
removeConstructor
in interface MClass
public MConstructor[] getMutableConstructors()
MClass
getMutableConstructors
in interface MClass
public MField addNewField()
MClass
addNewField
in interface MClass
public void removeField(MField field)
MClass
removeField
in interface MClass
public MField[] getMutableFields()
MClass
getMutableFields
in interface MClass
public MMethod addNewMethod()
MClass
addNewMethod
in interface MClass
public void removeMethod(MMethod method)
MClass
removeMethod
in interface MClass
public MMethod[] getMutableMethods()
MClass
getMutableMethods
in interface MClass
public JProperty addNewProperty(String name, JMethod getter, JMethod setter)
addNewProperty
in interface MClass
public void removeProperty(JProperty p)
removeProperty
in interface MClass
public JProperty addNewDeclaredProperty(String name, JMethod getter, JMethod setter)
addNewDeclaredProperty
in interface MClass
public void removeDeclaredProperty(JProperty p)
removeDeclaredProperty
in interface MClass
public MClass addNewInnerClass(String name)
addNewInnerClass
in interface MClass
public void removeInnerClass(MClass clazz)
removeInnerClass
in interface MClass
public void setIsInterface(boolean b)
setIsInterface
in interface MClass
public void setIsAnnotationType(boolean b)
setIsAnnotationType
in interface MClass
public void setIsEnumType(boolean b)
setIsEnumType
in interface MClass
public String getQualifiedName()
JElement
Returns a qualified name for this abstraction. The exact format of this name depends on the particular abstraction. Please refer to the documentation for each JElement subclass for a detailed description of the qualified name formats.
getQualifiedName
in interface JClassRef
getQualifiedName
in interface JElement
public JClass getRefClass()
getRefClass
in interface JClassRef
public String getPackageName()
getPackageName
in interface JClassRefContext
public String[] getImportSpecs()
getImportSpecs
in interface JClassRefContext
public void setState(int state)
public static void validateClassName(String className) throws IllegalArgumentException
IllegalArgumentException
public void ensureLoaded()
Copyright © 2010 - 2020 Adobe. All Rights Reserved