@Beta
@Retention(value=RUNTIME)
@Target(value=METHOD)
@GwtCompatible
public @interface Inline
Modifier and Type | Required Element and Description |
---|---|
java.lang.String |
value
The inline format string.
|
Modifier and Type | Optional Element and Description |
---|---|
boolean |
constantExpression
Whether the compiled Java is a constant expression operator.
|
java.lang.Class<?>[] |
imported
Types that should be imported to inline the operation.
|
boolean |
statementExpression
Whether the inlined expression is a statement expression (see 14.8 - Statement Expressions in
Java Language Specification, Third Edition )
|
public abstract java.lang.String value
The inline format string. Placeholders like $1, $2
etc can be used where the 1..n
parameters of
the inlined method are used for $1
to $n
and the imported()
types are used for
subsequent indices. The next index $n
can be used to insert all type parameters of the original
declaration. And finally the last indices refer to the upper bound substitute of the type parameters
individually.
So the order is arguments, imports, all type parameters at once incl. brackets and upper bounds of the individual type parameters without brackets
For the following signature
@Inline(value=".." imported = BigDecimal.class) public void <T1, T2> myMethod(String p1, String p2)
$1
refers to p1
$2
refers to p2
$3
refers to BigDecimal
$4
refers to <T1, T2>
$5
refers to the upper bound of T1
$6
refers to the upper bound of T2
public abstract java.lang.Class<?>[] imported
public abstract boolean statementExpression
public abstract boolean constantExpression