Class JDefinedClass
- All Implemented Interfaces:
JAnnotatable
,JClassContainer
,JDeclaration
,JDocCommentable
,JGenerable
,JGenerifiable
,Comparable<JType>
- Direct Known Subclasses:
JAnonymousClass
This class models a declaration, and since a declaration can be always
used as a reference, it inherits JClass
.
Where to go from here?
You'd want to generate fields and methods on a class.
See method(int, JType, String)
and field(int, JType, String)
.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate List
<JAnnotationUse> Annotations on this variable.private Map
<String, JDefinedClass> Nested classes as a map from name to JDefinedClass.private final ClassType
Default value is class or interface or annotationTypeDeclaration or enumSet of constructors for this class, if anyprivate String
String that will be put directly inside the generated code.private final Map
<String, JEnumConstant> Set of enum constants that are keyed by names.Fields keyed by their names.private final JGenerifiableImpl
Helper class to implementJGenerifiable
.private boolean
Flag that controls whether this class should be really generated or not.private JBlock
Static initializer, if this class has oneList of interfaces that this class implementsprivate JDocComment
class javadocClient-app spcific metadata associated with this user-created class.Set of methods that are members of this classprivate JMods
Modifiers for the class declarationprivate String
Name of this class.private JClassContainer
If this is a package-member class, this isJPackage
.private JClass
Name of the super class of this class.Fields inherited from class com.sun.codemodel.JClass
EMPTY_ARRAY
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprivate
JDefinedClass
(int mods, String name, JClassContainer parent, JCodeModel owner) private
JDefinedClass
(int mods, String name, JClassContainer parent, JCodeModel owner, ClassType classTypeVal) JClass constructor(package private)
JDefinedClass
(JClassContainer parent, int mods, String name, ClassType classTypeval) (package private)
JDefinedClass
(JCodeModel owner, int mods, String name) Constructor for creating anonymous inner class. -
Method Summary
Modifier and TypeMethodDescriptionAdd an annotationType Declaration to this packageAdd a new nested class to this class.Deprecated.Creates a new class/enum/interface/annotation.Add a new public nested class to this class.Add a public enum to this packageAdd a public enum to this package_extends()
Returns the class extended by this class.This class extends the specifed class.Returns an iterator that walks the nested classes defined in this class._implements
(JClass iface) This class implements the specifed interface._implements
(Class<?> iface) _interface
(int mods, String name) Add an interface to this package._interface
(String name) Adds a public interface to this package.final JPackage
_package()
Gets the package to which this class belongs.Adding ability to annotate a classannotate
(Class<? extends Annotation> clazz) Adding ability to annotate a class<W extends JAnnotationWriter>
WAdds an annotation to this program element and returns a type-safe writer to fill in the values of such annotations.Gets the binary name of the type.final Iterator
<JDefinedClass> classes()
Returns an iterator that walks the nested classes defined in this class.constructor
(int mods) Adds a constructor to this class.Returns an iterator that walks the constructors defined in this class.void
protected void
prints the body of a class.void
Places the given string directly inside the generated class.enumConstant
(String name) If the named enum already exists, the reference to it is returned.Adds a field to the list of field members of this JDefinedClass.field
(int mods, JType type, String name, JExpression init) Adds a field to the list of field members of this JDefinedClass.field
(int mods, Class<?> type, String name, JExpression init) fields()
Returns all the fields declred in this class.fullName()
Gets the fully qualified name of this class.Adds a new type variable to this declaration.Adds a new type variable to this declaration with a bound.Adds a new type variable to this declaration with a bound.private Map
<String, JDefinedClass> getConstructor
(JType[] argTypes) Looks for a method that has the specified method signature and return it.Looks for a method that has the specified method signature and return it.Gets the nearest package parent.void
hide()
Mark this file as hidden, so that this file won't be generated.init()
Creates, if necessary, and returns the static initializer for this class.boolean
Checks if this class is an abstract class.boolean
This method indicates if the interface is an annotationTypeDeclarationfinal boolean
Returns true if this is an anonymous class.boolean
isClass()
Returns true if the container is a class.boolean
isHidden()
boolean
Checks if this object represents an interface.boolean
Returns true if the container is a package.javadoc()
Creates, if necessary, and returns the class javadoc for this JDefinedClassfinal JClass[]
Returns all the nested classes defined in this class.Add a method to the list of method members of this JDefinedClass instance.methods()
Returns the set of methods defined in this class.mods()
name()
JClass name accessor.outer()
Returns the class in which this class is nested, or null if this is a top-level class.final JClassContainer
Parent JClassContainer.void
removeField
(JFieldVar field) Removes aJFieldVar
from this class.protected JClass
substituteParams
(JTypeVar[] variables, List<JClass> bindings) Substitutes the type variables with their actual arguments.JTypeVar[]
Iterates all the type parameters of this class/interface.Methods inherited from class com.sun.codemodel.JClass
array, boxify, dotclass, erasure, generate, getBaseClass, getBaseClass, getPrimitiveType, getTypeParameters, isAssignableFrom, isParameterized, narrow, narrow, narrow, narrow, narrow, narrow, owner, printLink, staticInvoke, staticInvoke, staticRef, staticRef, toString, unboxify, wildcard
Methods inherited from class com.sun.codemodel.JType
compareTo, elementType, isArray, isPrimitive, isReference, parse
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface com.sun.codemodel.JClassContainer
owner
-
Field Details
-
name
Name of this class. Null if anonymous. -
mods
Modifiers for the class declaration -
superClass
Name of the super class of this class. -
interfaces
List of interfaces that this class implements -
fields
Fields keyed by their names. -
init
Static initializer, if this class has one -
jdoc
class javadoc -
constructors
Set of constructors for this class, if any -
methods
Set of methods that are members of this class -
classes
Nested classes as a map from name to JDefinedClass. The name is all capitalized in a case sensitive file system (JCodeModel.isCaseSensitiveFileSystem
) to avoid conflicts. Lazily created to save footprint.- See Also:
-
hideFile
private boolean hideFileFlag that controls whether this class should be really generated or not. Sometimes it is useful to generate code that refers to class X, without actually generating the code of X. This flag is used to surpress X.java file in the output. -
metadata
Client-app spcific metadata associated with this user-created class. -
directBlock
String that will be put directly inside the generated code. Can be null. -
outer
If this is a package-member class, this isJPackage
. If this is a nested class, this isJDefinedClass
. If this is an anonymous class, this constructor shouldn't be used. -
classType
Default value is class or interface or annotationTypeDeclaration or enum -
enumConstantsByName
Set of enum constants that are keyed by names. In Java, enum constant order is actually significant, because of order ID they get. So let's preserve the order. -
annotations
Annotations on this variable. Lazily created. -
generifiable
Helper class to implementJGenerifiable
.
-
-
Constructor Details
-
JDefinedClass
JDefinedClass(JClassContainer parent, int mods, String name, ClassType classTypeval) -
JDefinedClass
JDefinedClass(JCodeModel owner, int mods, String name) Constructor for creating anonymous inner class. -
JDefinedClass
-
JDefinedClass
private JDefinedClass(int mods, String name, JClassContainer parent, JCodeModel owner, ClassType classTypeVal) JClass constructor- Parameters:
mods
- Modifiers for this class declarationname
- Name of this class
-
-
Method Details
-
isAnonymous
public final boolean isAnonymous()Returns true if this is an anonymous class. -
_extends
This class extends the specifed class.- Parameters:
superClass
- Superclass for this class- Returns:
- This class
-
_extends
-
_extends
Returns the class extended by this class.- Specified by:
_extends
in classJClass
- Returns:
- Returns the JClass representing the superclass of the
entity (class or interface) represented by this
JClass
. Even if no super class is given explicitly or thisJClass
is not a class, this method still returnsJClass
forObject
. If this JClass representsObject
, return null.
-
_implements
This class implements the specifed interface.- Parameters:
iface
- Interface that this class implements- Returns:
- This class
-
_implements
-
_implements
Returns an iterator that walks the nested classes defined in this class.- Specified by:
_implements
in classJClass
- Returns:
- A non-null valid iterator that iterates all
JClass
objects that represents those interfaces implemented by this object.
-
name
JClass name accessor.For example, for
java.util.List
, this method returns"List"
" -
enumConstant
If the named enum already exists, the reference to it is returned. Otherwise this method generates a new enum reference with the given name and returns it.- Parameters:
name
- The name of the constant.- Returns:
- The generated type-safe enum constant.
-
fullName
Gets the fully qualified name of this class. -
binaryName
Description copied from class:JType
Gets the binary name of the type. See http://java.sun.com/docs/books/jls/third_edition/html/binaryComp.html#44909- Overrides:
binaryName
in classJType
- Returns:
- Name like "Foo$Bar", "int", "java.lang.String", "java.io.File[]". Never null.
-
isInterface
public boolean isInterface()Description copied from class:JClass
Checks if this object represents an interface.- Specified by:
isInterface
in classJClass
-
isAbstract
public boolean isAbstract()Description copied from class:JClass
Checks if this class is an abstract class.- Specified by:
isAbstract
in classJClass
-
field
Adds a field to the list of field members of this JDefinedClass.- Parameters:
mods
- Modifiers for this fieldtype
- JType of this fieldname
- Name of this field- Returns:
- Newly generated field
-
field
-
field
Adds a field to the list of field members of this JDefinedClass.- Parameters:
mods
- Modifiers for this field.type
- JType of this field.name
- Name of this field.init
- Initial value of this field.- Returns:
- Newly generated field
-
isAnnotationTypeDeclaration
public boolean isAnnotationTypeDeclaration()This method indicates if the interface is an annotationTypeDeclaration -
_annotationTypeDeclaration
Add an annotationType Declaration to this package- Specified by:
_annotationTypeDeclaration
in interfaceJClassContainer
- Parameters:
name
- Name of the annotation Type declaration to be added to this package- Returns:
- newly created Annotation Type Declaration
- Throws:
JClassAlreadyExistsException
- When the specified class/interface was already created.
-
_enum
Add a public enum to this package- Specified by:
_enum
in interfaceJClassContainer
- Parameters:
name
- Name of the enum to be added to this package- Returns:
- newly created Enum
- Throws:
JClassAlreadyExistsException
- When the specified class/interface was already created.
-
_enum
Add a public enum to this package- Parameters:
mods
- Modifiers for this enum declarationname
- Name of the enum to be added to this package- Returns:
- newly created Enum
- Throws:
JClassAlreadyExistsException
- When the specified class/interface was already created.
-
getClassType
-
field
-
fields
Returns all the fields declred in this class. The returnedMap
is a read-only live view.- Returns:
- always non-null.
-
removeField
Removes aJFieldVar
from this class.- Throws:
IllegalArgumentException
- if the given field is not a field on this class.
-
init
Creates, if necessary, and returns the static initializer for this class.- Returns:
- JBlock containing initialization statements for this class
-
constructor
Adds a constructor to this class.- Parameters:
mods
- Modifiers for this constructor
-
constructors
Returns an iterator that walks the constructors defined in this class. -
getConstructor
Looks for a method that has the specified method signature and return it.- Returns:
- null if not found.
-
method
Add a method to the list of method members of this JDefinedClass instance.- Parameters:
mods
- Modifiers for this methodtype
- Return type for this methodname
- Name of the method- Returns:
- Newly generated JMethod
-
method
-
methods
Returns the set of methods defined in this class. -
getMethod
Looks for a method that has the specified method signature and return it.- Returns:
- null if not found.
-
isClass
public boolean isClass()Description copied from interface:JClassContainer
Returns true if the container is a class.- Specified by:
isClass
in interfaceJClassContainer
-
isPackage
public boolean isPackage()Description copied from interface:JClassContainer
Returns true if the container is a package.- Specified by:
isPackage
in interfaceJClassContainer
-
getPackage
Description copied from interface:JClassContainer
Gets the nearest package parent.If this.isPackage(), then return this.
- Specified by:
getPackage
in interfaceJClassContainer
-
_class
Add a new nested class to this class.- Specified by:
_class
in interfaceJClassContainer
- Parameters:
mods
- Modifiers for this class declarationname
- Name of class to be added to this package- Returns:
- Newly generated class
- Throws:
JClassAlreadyExistsException
- When the specified class/interface was already created.
-
_class
public JDefinedClass _class(int mods, String name, boolean isInterface) throws JClassAlreadyExistsException Deprecated.Create a new class or a new interface.- Specified by:
_class
in interfaceJClassContainer
- Throws:
JClassAlreadyExistsException
-
_class
public JDefinedClass _class(int mods, String name, ClassType classTypeVal) throws JClassAlreadyExistsException Description copied from interface:JClassContainer
Creates a new class/enum/interface/annotation.- Specified by:
_class
in interfaceJClassContainer
- Throws:
JClassAlreadyExistsException
-
_class
Add a new public nested class to this class.- Specified by:
_class
in interfaceJClassContainer
- Throws:
JClassAlreadyExistsException
- When the specified class/interface was already created.
-
_interface
Add an interface to this package.- Specified by:
_interface
in interfaceJClassContainer
- Parameters:
mods
- Modifiers for this interface declarationname
- Name of interface to be added to this package- Returns:
- Newly generated interface
- Throws:
JClassAlreadyExistsException
- When the specified class/interface was already created.
-
_interface
Adds a public interface to this package.- Specified by:
_interface
in interfaceJClassContainer
- Throws:
JClassAlreadyExistsException
- When the specified class/interface was already created.
-
javadoc
Creates, if necessary, and returns the class javadoc for this JDefinedClass- Specified by:
javadoc
in interfaceJDocCommentable
- Returns:
- JDocComment containing javadocs for this class
-
hide
public void hide()Mark this file as hidden, so that this file won't be generated.This feature could be used to generate code that refers to class X, without actually generating X.java.
-
isHidden
public boolean isHidden() -
classes
Returns an iterator that walks the nested classes defined in this class.- Specified by:
classes
in interfaceJClassContainer
-
getClasses
-
listClasses
Returns all the nested classes defined in this class. -
outer
Description copied from class:JClass
Returns the class in which this class is nested, or null if this is a top-level class. -
declare
- Specified by:
declare
in interfaceJDeclaration
-
declareBody
prints the body of a class. -
direct
Places the given string directly inside the generated class. This method can be used to add methods/fields that are not generated by CodeModel. This method should be used only as the last resort. -
_package
Description copied from class:JClass
Gets the package to which this class belongs. TODO: shall we move move this down? -
parentContainer
Description copied from interface:JClassContainer
Parent JClassContainer. If this is a package, this method returns a parent package, or null if this package is the root package. If this is an outer-most class, this method returns a package to which it belongs. If this is an inner class, this method returns the outer class.- Specified by:
parentContainer
in interfaceJClassContainer
-
generify
Description copied from interface:JGenerifiable
Adds a new type variable to this declaration.- Specified by:
generify
in interfaceJGenerifiable
-
generify
Description copied from interface:JGenerifiable
Adds a new type variable to this declaration with a bound.- Specified by:
generify
in interfaceJGenerifiable
-
generify
Description copied from interface:JGenerifiable
Adds a new type variable to this declaration with a bound.- Specified by:
generify
in interfaceJGenerifiable
-
typeParams
Description copied from class:JClass
Iterates all the type parameters of this class/interface.For example, if this
JClass
representsSet<T>
, this method returns an array that contains singleJTypeVar
for 'T'.- Specified by:
typeParams
in interfaceJGenerifiable
- Overrides:
typeParams
in classJClass
-
substituteParams
Description copied from class:JClass
Substitutes the type variables with their actual arguments.For example, when this class is Map<String,Map<V>>, (where V then doing substituteParams( V, Integer ) returns a
JClass
forMap<String,Map<Integer>>
.This method needs to work recursively.
- Specified by:
substituteParams
in classJClass
-
annotate
Adding ability to annotate a class- Specified by:
annotate
in interfaceJAnnotatable
- Parameters:
clazz
- The annotation class to annotate the class with
-
annotate
Adding ability to annotate a class- Specified by:
annotate
in interfaceJAnnotatable
- Parameters:
clazz
- The annotation class to annotate the class with
-
annotate2
Description copied from interface:JAnnotatable
Adds an annotation to this program element and returns a type-safe writer to fill in the values of such annotations.- Specified by:
annotate2
in interfaceJAnnotatable
-
annotations
- Specified by:
annotations
in interfaceJAnnotatable
- Returns:
- Can be empty but never null.
-
mods
- Returns:
- the current modifiers of this class. Always return non-null valid object.
-