Class FieldTemplate
@Clazz(commentExpr="The generated class for the example.")
@RuntimeMetadata
public class FieldTemplate
extends java.lang.Object
- For more details on how to generate fields conditionally, see
 
ConditionTemplate. - For more details on how to set the src and how to generate multiple
 fields from one field template, see 
SourceTemplate. - For more details on how to set the modifiers of the field, see
 
ModifiersTemplate. - For more details on how to set the annotations of the field, see
 
AnnotationsTemplate. - For more details on how to set the type of the field, see
 
TypeTemplate. - For more details on how to set the name of the field, see
 
MemberNameTemplate. 
- 
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) classFieldTemplate.fieldsA function to get the fields of aTypeElement.(package private) classFieldTemplate.hasNotNullA function that returns true if the given element has aNotNullannotation.static interfaceFieldTemplate.isListA function that returns true if the given element's type is List.(package private) classFieldTemplate.notNullCheckThis will generate a statement that checks for null, if the given source element has theNotNullannotation.(package private) classFieldTemplate.setterDefensiveCopyGenerates a code to create a defensive copy if a mutable type is used. - 
Field Summary
Fields Modifier and Type Field Description private de.japkit.functions.SrcType$name$A field for every field in the annotated classFieldExample.static java.lang.String[]FIELD_NAMESTo show some more complex initializer code, a constant field is generated here that has the array of all field names as value.private java.lang.StringfixedFieldA field with fix name and type and with public getters and setters. - 
Constructor Summary
Constructors Constructor Description FieldTemplate() - 
Method Summary
 
- 
Field Details
- 
fixedField
@Field(getter=@Getter(commentExpr="the value of fixedField"), setter=@Setter(commentExpr="the new value for fixedField"), initCode="\"foobar\"") private java.lang.String fixedFieldA field with fix name and type and with public getters and setters.While getters and setters could be generated as methods (see
MethodTemplate), they are so common that japkit provides some more convenience for it.The field is initialized with the value "foobar".
 - 
$name$
@Field(srcFun=fields.class, getter=@Getter(commentExpr="the value of #{name}"), setter=@Setter(commentExpr="the new value for #{name}",chain=true,fluent=true,beforeFragments="notNullCheck",surroundAssignmentExprFragments="setterDefensiveCopy"), genElementIsSrcForDependentRules=false) private de.japkit.functions.SrcType $name$A field for every field in the annotated classFieldExample.The setters are fluent style and return this for chaining.
For fields with a
NotNullannotation, a null-check is added to the setter by calling theCodeFragmentFieldTemplate.notNullCheck. ForFieldExample.someStringthis will result inif (someString == null) { throw new IllegalArgumentException("someString must not be null."); } this.someString = someString;For fields of mutable types, the
FieldTemplate.setterDefensiveCopyis called to make a defensive copy in the setter. The code generated by that fragment "surrounds" the right hand side of the assignment in the setter. For example, for the fieldFieldExample.someStringListthis will result inthis.someStringList = new ArrayList<>(someStringList);
 - 
FIELD_NAMES
@Field(initIterator="#{fields()}") public static final java.lang.String[] FIELD_NAMESTo show some more complex initializer code, a constant field is generated here that has the array of all field names as value.- The initIterator tells to iterate over the fields of the annotated class.
 - The initBeforeIteratorCode is the code to be generated before the iteration starts.
 - The initAfterIteratorCode is the code to be generated after the iteration ends.
 - The initCode is the code to be generated for each iteration. Here, it
 is the name of the field from the annotated class in double quotes.
 
 
- @japkit.initBeforeIteratorCode
 - new String[] {
 - @japkit.initCode
 - "#{name}"
 - @japkit.initSeparator
 - ,
 - @japkit.initAfterIteratorCode
 - }
 
 
 - 
 - 
Constructor Details
- 
FieldTemplate
public FieldTemplate() 
 -