Class CodeBlock.Builder
- java.lang.Object
-
- com.squareup.javapoet.CodeBlock.Builder
-
- Enclosing class:
- CodeBlock
public static final class CodeBlock.Builder extends java.lang.Object
-
-
Field Summary
Fields Modifier and Type Field Description (package private) java.util.List<java.lang.Object>
args
(package private) java.util.List<java.lang.String>
formatParts
-
Constructor Summary
Constructors Modifier Constructor Description private
Builder()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description CodeBlock.Builder
add(CodeBlock codeBlock)
CodeBlock.Builder
add(java.lang.String format, java.lang.Object... args)
Add code with positional or relative arguments.private void
addArgument(java.lang.String format, char c, java.lang.Object arg)
CodeBlock.Builder
addNamed(java.lang.String format, java.util.Map<java.lang.String,?> arguments)
Adds code using named arguments.CodeBlock.Builder
addStatement(CodeBlock codeBlock)
CodeBlock.Builder
addStatement(java.lang.String format, java.lang.Object... args)
private java.lang.Object
argToLiteral(java.lang.Object o)
private java.lang.String
argToName(java.lang.Object o)
private java.lang.String
argToString(java.lang.Object o)
private TypeName
argToType(java.lang.Object o)
CodeBlock.Builder
beginControlFlow(java.lang.String controlFlow, java.lang.Object... args)
CodeBlock
build()
CodeBlock.Builder
clear()
CodeBlock.Builder
endControlFlow()
CodeBlock.Builder
endControlFlow(java.lang.String controlFlow, java.lang.Object... args)
CodeBlock.Builder
indent()
boolean
isEmpty()
private boolean
isNoArgPlaceholder(char c)
CodeBlock.Builder
nextControlFlow(java.lang.String controlFlow, java.lang.Object... args)
CodeBlock.Builder
unindent()
-
-
-
Method Detail
-
isEmpty
public boolean isEmpty()
-
addNamed
public CodeBlock.Builder addNamed(java.lang.String format, java.util.Map<java.lang.String,?> arguments)
Adds code using named arguments.Named arguments specify their name after the '$' followed by : and the corresponding type character. Argument names consist of characters in
a-z, A-Z, 0-9, and _
and must start with a lowercase character.For example, to refer to the type
Integer
with the argument nameclazz
use a format string containing$clazz:T
and include the keyclazz
with valuejava.lang.Integer.class
in the argument map.
-
add
public CodeBlock.Builder add(java.lang.String format, java.lang.Object... args)
Add code with positional or relative arguments.Relative arguments map 1:1 with the placeholders in the format string.
Positional arguments use an index after the placeholder to identify which argument index to use. For example, for a literal to reference the 3rd argument: "$3L" (1 based index)
Mixing relative and positional arguments in a call to add is invalid and will result in an error.
-
isNoArgPlaceholder
private boolean isNoArgPlaceholder(char c)
-
addArgument
private void addArgument(java.lang.String format, char c, java.lang.Object arg)
-
argToName
private java.lang.String argToName(java.lang.Object o)
-
argToLiteral
private java.lang.Object argToLiteral(java.lang.Object o)
-
argToString
private java.lang.String argToString(java.lang.Object o)
-
argToType
private TypeName argToType(java.lang.Object o)
-
beginControlFlow
public CodeBlock.Builder beginControlFlow(java.lang.String controlFlow, java.lang.Object... args)
- Parameters:
controlFlow
- the control flow construct and its code, such as "if (foo == 5)". Shouldn't contain braces or newline characters.
-
nextControlFlow
public CodeBlock.Builder nextControlFlow(java.lang.String controlFlow, java.lang.Object... args)
- Parameters:
controlFlow
- the control flow construct and its code, such as "else if (foo == 10)". Shouldn't contain braces or newline characters.
-
endControlFlow
public CodeBlock.Builder endControlFlow()
-
endControlFlow
public CodeBlock.Builder endControlFlow(java.lang.String controlFlow, java.lang.Object... args)
- Parameters:
controlFlow
- the optional control flow construct and its code, such as "while(foo == 20)". Only used for "do/while" control flows.
-
addStatement
public CodeBlock.Builder addStatement(java.lang.String format, java.lang.Object... args)
-
addStatement
public CodeBlock.Builder addStatement(CodeBlock codeBlock)
-
add
public CodeBlock.Builder add(CodeBlock codeBlock)
-
indent
public CodeBlock.Builder indent()
-
unindent
public CodeBlock.Builder unindent()
-
clear
public CodeBlock.Builder clear()
-
build
public CodeBlock build()
-
-