public class CtField extends CtMember
CtClass.getDeclaredFields()
Modifier and Type | Class and Description |
---|---|
static class |
CtField.Initializer
Instances of this class specify how to initialize a field.
|
Constructor and Description |
---|
CtField(CtClass type,
java.lang.String name,
CtClass declaring)
Creates a
CtField object. |
CtField(CtField src,
CtClass declaring)
Creates a copy of the given field.
|
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
getAnnotation(java.lang.Class clz)
Returns the annotation if the class has the specified annotation class.
|
java.lang.Object[] |
getAnnotations()
Returns the annotations associated with this field.
|
byte[] |
getAttribute(java.lang.String name)
Obtains an attribute with the given name.
|
java.lang.Object[] |
getAvailableAnnotations()
Returns the annotations associated with this field.
|
java.lang.Object |
getConstantValue()
Returns the value of this field if it is a constant field.
|
CtClass |
getDeclaringClass()
Returns the class declaring the field.
|
FieldInfo |
getFieldInfo()
Returns the FieldInfo representing the field in the class file.
|
FieldInfo |
getFieldInfo2()
Returns the FieldInfo representing the field in the class
file (read only).
|
java.lang.String |
getGenericSignature()
Returns the generic signature of the field.
|
int |
getModifiers()
Returns the encoded modifiers of the field.
|
java.lang.String |
getName()
Returns the name of the field.
|
java.lang.String |
getSignature()
Returns the character string representing the type of the field.
|
CtClass |
getType()
Returns the type of the field.
|
boolean |
hasAnnotation(java.lang.String typeName)
Returns true if the class has the specified annotation type.
|
static CtField |
make(java.lang.String src,
CtClass declaring)
Compiles the given source code and creates a field.
|
void |
setAttribute(java.lang.String name,
byte[] data)
Adds an attribute.
|
void |
setGenericSignature(java.lang.String sig)
Set the generic signature of the field.
|
void |
setModifiers(int mod)
Sets the encoded modifiers of the field.
|
void |
setName(java.lang.String newName)
Changes the name of the field.
|
void |
setType(CtClass clazz)
Sets the type of the field.
|
java.lang.String |
toString()
Returns a String representation of the object.
|
hasAnnotation, visibleFrom
public CtField(CtClass type, java.lang.String name, CtClass declaring) throws CannotCompileException
CtField
object.
The created field must be added to a class
with CtClass.addField()
.
An initial value of the field is specified
by a CtField.Initializer
object.
If getter and setter methods are needed,
call CtNewMethod.getter()
and
CtNewMethod.setter()
.
type
- field typename
- field namedeclaring
- the class to which the field will be added.CannotCompileException
CtClass.addField(CtField)
,
CtNewMethod.getter(String,CtField)
,
CtNewMethod.setter(String,CtField)
,
CtField.Initializer
public CtField(CtField src, CtClass declaring) throws CannotCompileException
CtClass.addField()
.
An initial value of the field is specified
by a CtField.Initializer
object.
If getter and setter methods are needed,
call CtNewMethod.getter()
and
CtNewMethod.setter()
.
src
- the original fielddeclaring
- the class to which the field will be added.CannotCompileException
CtNewMethod.getter(String,CtField)
,
CtNewMethod.setter(String,CtField)
,
CtField.Initializer
public java.lang.String toString()
public static CtField make(java.lang.String src, CtClass declaring) throws CannotCompileException
"public String name;" "public int k = 3;"
Note that the source code ends with ';'
(semicolon).
src
- the source text.declaring
- the class to which the created field is added.CannotCompileException
public FieldInfo getFieldInfo()
public FieldInfo getFieldInfo2()
getFieldInfo()
.
The FieldInfo
object obtained by this method
is read only. Changes to this object might not be reflected
on a class file generated by toBytecode()
,
toClass()
, etc in CtClass
.
This method is available even if the CtClass
containing this field is frozen. However, if the class is
frozen, the FieldInfo
might be also pruned.
getFieldInfo()
,
CtClass.isFrozen()
,
CtClass.prune()
public CtClass getDeclaringClass()
getDeclaringClass
in class CtMember
public java.lang.String getName()
getName
in class CtMember
CtConstructor.getName()
public void setName(java.lang.String newName)
public int getModifiers()
getModifiers
in class CtMember
javassist.Modifier
.Modifier
public void setModifiers(int mod)
setModifiers
in class CtMember
Modifier
public boolean hasAnnotation(java.lang.String typeName)
hasAnnotation
in class CtMember
typeName
- the name of annotation type.true
if the annotation is found, otherwise false
.public java.lang.Object getAnnotation(java.lang.Class clz) throws java.lang.ClassNotFoundException
@Author
is associated
with this field, an Author
object is returned.
The member values can be obtained by calling methods on
the Author
object.getAnnotation
in class CtMember
clz
- the annotation class.null
.java.lang.ClassNotFoundException
public java.lang.Object[] getAnnotations() throws java.lang.ClassNotFoundException
getAnnotations
in class CtMember
java.lang.ClassNotFoundException
getAvailableAnnotations()
public java.lang.Object[] getAvailableAnnotations()
getAvailableAnnotations
in class CtMember
getAnnotations()
public java.lang.String getSignature()
getSignature()
returns the same string.
Note that the returned string is not the type signature
contained in the SignatureAttirbute
. It is
a descriptor.
getSignature
in class CtMember
Descriptor
,
getGenericSignature()
public java.lang.String getGenericSignature()
getGenericSignature
in class CtMember
SignatureAttribute.toFieldSignature(String)
public void setGenericSignature(java.lang.String sig)
CtClass.setGenericSignature(String)
for a code sample.setGenericSignature
in class CtMember
sig
- a new generic signature.SignatureAttribute.ObjectType.encode()
public CtClass getType() throws NotFoundException
NotFoundException
public void setType(CtClass clazz)
This method does not automatically update method bodies that access
this field. They have to be explicitly updated. For example,
if some method contains an expression t.value
and the type
of the variable t
is changed by setType(CtClass)
from int
to double
, then has to be modified
since the bytecode of t.value
contains the type information.
CodeConverter
,
ExprEditor
public java.lang.Object getConstantValue()
String
type. Otherwise, it returns null
.
A constant field is static
and final
.Integer
, Long
, Float
,
Double
, Boolean
,
or String
object
representing the constant value.
null
if it is not a constant field
or if the field type is not a primitive type
or String
.public byte[] getAttribute(java.lang.String name)
Note that an attribute is a data block specified by
the class file format.
See AttributeInfo
.
getAttribute
in class CtMember
name
- attribute namepublic void setAttribute(java.lang.String name, byte[] data)
Note that an attribute is a data block specified by
the class file format.
See AttributeInfo
.
setAttribute
in class CtMember
name
- attribute namedata
- attribute valueJavassist, a Java-bytecode translator toolkit.
Copyright (C) 1999- Shigeru Chiba. All Rights Reserved.