public class classdesc extends contentbase
Represents the entire serialized prototype of the class, including all fields, inner classes, class annotations, and inheritance hierarchy. This includes proxy class descriptions.
Generally, this class is used to represent the type of an instance written to an ObjectOutputStream with its writeObject() method, or of a related array or field type. However, there's a notable exception: when instances of type java.io.ObjectStreamClass are written with writeObject(), only their class description is written (cf. Object Serialization Specification, 4.3). They will be represented with an instance of classdesc as well.
Modifier and Type | Field and Description |
---|---|
java.util.List<content> |
annotations
List of annotation objects; these are *not* Java annotations, but data
written by the
annotateClass(Class
|
classdesctype |
classtype
Type of the class being represented; either a normal class or a proxy class.
|
byte |
descflags
Description flags byte; this should be a mask of values from the
ObjectStreamContants class.
|
java.util.Set<java.lang.String> |
enumconstants
Set of enum constants, for enum classes.
|
field[] |
fields
Array of fields in the class, in the order serialized by the stream writer.
|
java.util.List<classdesc> |
innerclasses
List of inner classes, in the order serialized by the stream writer.
|
java.lang.String[] |
interfaces
Array of serialized interfaces, in the order serialized by the stream writer.
|
private boolean |
isInnerClass |
private boolean |
isLocalInnerClass |
private boolean |
isStaticMemberClass |
java.lang.String |
name
Class name.
|
long |
serialVersionUID
Serial version UID, as recorded in the stream.
|
classdesc |
superclass
The superclass of the object, if available.
|
handle, isExceptionObject, type
Constructor and Description |
---|
classdesc(classdesctype classtype)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
void |
addEnum(java.lang.String constval)
Add an enum constant to the description's set.
|
void |
addInnerClass(classdesc cd)
Add an inner class to the description's list.
|
private void |
closingJsonSeq(java.lang.StringBuffer sb,
java.lang.String indentation)
Removes the indentation, inserts new line and closing curly brackets in sb
Does this sequence twice for closing the classdesc toJson
|
private void |
extendsToJson(java.lang.StringBuffer sb,
classdesc superclass)
Appends the extends clausule to the input StringBuffer.
|
void |
getHierarchy(java.util.ArrayList<classdesc> classes)
Generates a list of all class descriptions in this class's hierarchy, in the
order described by the Object Stream Serialization Protocol.
|
private void |
interfacesToJson(java.lang.StringBuffer sb,
java.lang.String[] interfaces)
Appends the implements clausule to the input StringBuffer.
|
boolean |
isArrayClass()
Determines whether this is an array type.
|
boolean |
isInnerClass()
True if this class has been determined to be an inner class; this
determination is generally made by connectMemberClasses().
|
boolean |
isLocalInnerClass()
True if this class has been determined to be a local inner class; this
determination is generally made by connectMemberClasses().
|
boolean |
isStaticMemberClass()
True if this class has been determined to be a static member class; this
determination is generally made by connectMemberClasses().
|
void |
setIsInnerClass(boolean nis)
Sets the value that denotes that the class is an inner class.
|
void |
setIsLocalInnerClass(boolean nis)
Sets the flag that denotes whether this class is a local inner class.
|
void |
setIsStaticMemberClass(boolean nis)
Sets the flag that denotes whether this class is a static member class.
|
java.lang.String |
toJson(java.lang.String indentation,
java.util.Map<classdesc,java.util.Map<field,java.lang.Object>> fielddata,
boolean child)
Analogy for toString method; however, outputs its string in json formatting.
|
java.lang.String |
toString() |
void |
validate()
Performs extra object-specific validity checks.
|
getHandle, getType, isExceptionObject, setIsExceptionObject
public classdesctype classtype
public java.lang.String name
public long serialVersionUID
public byte descflags
public field[] fields
public java.util.List<classdesc> innerclasses
public java.util.List<content> annotations
annotateClass(Class>)andannotateProxyClass(Class>)methods of an ObjectOutputStream.
public classdesc superclass
public java.lang.String[] interfaces
public java.util.Set<java.lang.String> enumconstants
private boolean isInnerClass
private boolean isLocalInnerClass
private boolean isStaticMemberClass
public classdesc(classdesctype classtype)
classtype
- the type of the classpublic boolean isInnerClass()
public void setIsInnerClass(boolean nis)
nis
- the value to setpublic boolean isLocalInnerClass()
public void setIsLocalInnerClass(boolean nis)
nis
- the value to setpublic boolean isStaticMemberClass()
True if this class has been determined to be a static member class; this determination is generally made by connectMemberClasses().
Note that in some cases, static member classes' descriptions will be serialized even though their enclosing class is not. In these cases, this may return false. See connectMemberClasses() for details.
public void setIsStaticMemberClass(boolean nis)
nis
- the value to setpublic void addInnerClass(classdesc cd)
cd
- inner class to addpublic void addEnum(java.lang.String constval)
constval
- enum constant stringpublic boolean isArrayClass()
public java.lang.String toString()
toString
in class java.lang.Object
public void getHierarchy(java.util.ArrayList<classdesc> classes)
classes
- a list to be filled in with the hierarchypublic void validate() throws ValidityException
content
validate
in interface content
validate
in class contentbase
ValidityException
- if the object's state is invalidpublic java.lang.String toJson(java.lang.String indentation, java.util.Map<classdesc,java.util.Map<field,java.lang.Object>> fielddata, boolean child)
content
Analogy for toString method; however, outputs its string in json formatting. Returns the exact json representation of object with indentation.
Inherited by multiple classes via contentbase, often calls itself for another object
toJson
in interface content
toJson
in class contentbase
indentation
- starting indentation for json outputfielddata
- used when calling this method for inner instances
so the instance has info about its variables.
Instance info is saved in another content space than
info about its field variables, so it must be provided by parameter
to inner instanceschild
- tells that the instance is child of another because of indentationprivate void closingJsonSeq(java.lang.StringBuffer sb, java.lang.String indentation)
sb
- StringBuffer where the closing sequence will be appendedindentation
- Indentation to be changedprivate void extendsToJson(java.lang.StringBuffer sb, classdesc superclass)
sb
- StringBuffer to append the string tosuperclass
- superclass instance which name will be appendedprivate void interfacesToJson(java.lang.StringBuffer sb, java.lang.String[] interfaces)
sb
- StringBuffer to append the string tointerfaces
- Array of implemented interface names