public abstract class BuiltinClassImpl extends AnnotatedElementImpl implements MClass
Base class for types that are 'built in' to the VM. This includes void, primitives (but not their wrappers like Integer), and array types. Note that java.lang.Object is not considered a Builtin.
Note that while builtin classes cannot be modified, they can be annotated and commented.
I think this is going to include generics as well.NO_ANNOTATION, NO_CLASS, NO_COMMENT, NO_CONSTRUCTOR, NO_FIELD, NO_METHOD, NO_NODE, NO_PACKAGE, NO_PARAMETER, NO_PROPERTY
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 className)
Adds to the list of interfaces implemented by this class.
|
void |
addInterfaceUnqualified(String unqualifiedClassName)
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 m,
JMethod x) |
MField |
addNewField()
Creates a new field, adds it to this class, and returns it.
|
MClass |
addNewInnerClass(String named) |
MMethod |
addNewMethod()
Creates a new method, adds it to this class, and returns it.
|
JProperty |
addNewProperty(String name,
JMethod m,
JMethod x) |
boolean |
equals(Object o)
Two JClasses are always considered equal as long as their
qualified names are the same.
|
JClass |
forName(String fd)
Shorthand for myClass.getClassLoader().loadClass(name)
|
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.
|
JConstructor[] |
getConstructors()
Returns an unordered array containing Constructor objects reflecting
all the public constructors of the class represented by this Class
object.
|
JClass |
getContainingClass()
Returns a representation of the class which contains this
member.
|
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.
|
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.
|
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.
|
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.
|
int |
hashCode() |
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 |
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 |
isPackagePrivate()
Return true if this member is package private (i.e.
|
boolean |
isPrimitiveType()
Return true if this JClass represents primitive type (int, long,
double, and so forth).
|
boolean |
isPrivate()
Return true if this member is private.
|
boolean |
isProtected()
Return true if this member is protected.
|
boolean |
isPublic()
Return true if this member is public.
|
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 prop) |
void |
removeField(MField field)
Removes the given field from this class.
|
void |
removeInnerClass(MClass inner) |
void |
removeInterface(JClass interf)
Removes an interface from the list of interfaces implemented by
this class.
|
void |
removeInterface(String className)
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 prop) |
void |
setIsAnnotationType(boolean b) |
void |
setIsEnumType(boolean b) |
void |
setIsInterface(boolean b) |
void |
setIsUnresolvedType(boolean b) |
void |
setModifiers(int modifiers) |
void |
setSimpleName(String s) |
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.
|
addAnnotationForProxy, addLiteralAnnotation, createComment, findOrCreateAnnotation, getAllJavadocTags, getAnnotation, getAnnotation, getAnnotationProxy, getAnnotations, getAnnotationValue, getComment, getEditableProxy, getMutableAnnotation, getMutableAnnotations, getMutableComment, removeAnnotation, removeComment
compareTo, createSourcePosition, defaultName, getArtifact, getClassLoader, getContext, getMutableSourcePosition, getParent, getSimpleName, removeSourcePosition, setArtifact, toString
addLiteralAnnotation, createComment, findOrCreateAnnotation, getMutableAnnotation, getMutableAnnotations, getMutableComment, removeComment
createSourcePosition, getClassLoader, getMutableSourcePosition, removeSourcePosition, setArtifact
getClassLoader, isAssignableFrom
getAllJavadocTags, getAnnotation, getAnnotation, getAnnotationProxy, getAnnotations, getAnnotationValue, getComment
getArtifact, getParent, getSimpleName, toString
public void accept(JVisitor visitor)
JElement
Accepts the given visitor.
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 JElement
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 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
public boolean isPublic()
JMember
public boolean isPackagePrivate()
JMember
isPackagePrivate
in interface JMember
public boolean isProtected()
JMember
isProtected
in interface JMember
public boolean isPrivate()
JMember
public JSourcePosition getSourcePosition()
JElement
getSourcePosition
in interface JElement
getSourcePosition
in class ElementImpl
public JClass getContainingClass()
JMember
Returns a representation of the class which contains this member. Note that if this member is an inner class, this method returns the class in which this class is declared (i.e. 'outer'). If this member is a top-level class, this method will always return null.
getContainingClass
in interface JClass
getContainingClass
in interface JMember
public JClass forName(String fd)
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 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 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 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 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 JPackage getContainingPackage()
JClass
Returns a JPackage which represents the package which contains this JClass.
getContainingPackage
in interface JClass
public boolean isInterface()
JClass
Returns true if this JClass represents an interface.
isInterface
in interface JClass
public boolean isArrayType()
JClass
Returns true if this JClass represents an array type.
isArrayType
in interface JClass
public boolean isAnnotationType()
JClass
Returns true if this JClass represents a JSR175 annotation type.
isAnnotationType
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 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 isVoidType()
JClass
Returns true if this JClass represents the void type.
isVoidType
in interface JClass
public boolean isEnumType()
JClass
Returns true if this class is an enumerated type.
isEnumType
in interface JClass
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 isAbstract()
JClass
isAbstract
in interface JClass
public boolean isFinal()
JClass
public boolean isStatic()
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 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 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 MField[] getMutableFields()
MClass
getMutableFields
in interface MClass
public MConstructor[] getMutableConstructors()
MClass
getMutableConstructors
in interface MClass
public MMethod[] getMutableMethods()
MClass
getMutableMethods
in interface MClass
public void setSimpleName(String s)
setSimpleName
in interface MElement
setSimpleName
in class ElementImpl
public void setIsAnnotationType(boolean b)
setIsAnnotationType
in interface MClass
public void setIsInterface(boolean b)
setIsInterface
in interface MClass
public void setIsUnresolvedType(boolean b)
public void setIsEnumType(boolean b)
setIsEnumType
in interface MClass
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(String className)
MClass
addInterface
in interface MClass
public void addInterfaceUnqualified(String unqualifiedClassName)
MClass
addInterfaceUnqualified
in interface MClass
public void addInterface(JClass interf)
MClass
addInterface
in interface MClass
public void removeInterface(String className)
MClass
removeInterface
in interface MClass
public void removeInterface(JClass interf)
MClass
removeInterface
in interface MClass
public MConstructor addNewConstructor()
MClass
addNewConstructor
in interface MClass
public void removeConstructor(MConstructor constr)
MClass
removeConstructor
in interface MClass
public MField addNewField()
MClass
addNewField
in interface MClass
public void removeField(MField field)
MClass
removeField
in interface MClass
public MMethod addNewMethod()
MClass
addNewMethod
in interface MClass
public void removeMethod(MMethod method)
MClass
removeMethod
in interface MClass
public void setModifiers(int modifiers)
setModifiers
in interface MMember
public MClass addNewInnerClass(String named)
addNewInnerClass
in interface MClass
public void removeInnerClass(MClass inner)
removeInnerClass
in interface MClass
public JProperty addNewProperty(String name, JMethod m, JMethod x)
addNewProperty
in interface MClass
public void removeProperty(JProperty prop)
removeProperty
in interface MClass
public JProperty addNewDeclaredProperty(String name, JMethod m, JMethod x)
addNewDeclaredProperty
in interface MClass
public void removeDeclaredProperty(JProperty prop)
removeDeclaredProperty
in interface MClass
public boolean equals(Object o)
JClass
equals
in interface JClass
equals
in class ElementImpl
public int hashCode()
hashCode
in class ElementImpl
Copyright © 2010 - 2020 Adobe. All Rights Reserved