@Internal public final class InputTypeStrategies extends Object
InputTypeStrategy,
ArgumentTypeStrategy| Modifier and Type | Field and Description |
|---|---|
static AnyArgumentTypeStrategy |
ANY
Strategy for an argument that can be of any type.
|
static LiteralArgumentTypeStrategy |
LITERAL
Strategy that checks if an argument is a literal.
|
static LiteralArgumentTypeStrategy |
LITERAL_OR_NULL
Strategy that checks if an argument is a literal or NULL.
|
static OutputArgumentTypeStrategy |
OUTPUT_IF_NULL
Strategy for inferring an unknown argument type from the function's output
DataType
if available. |
static WildcardInputTypeStrategy |
WILDCARD
Strategy that does not perform any modification or validation of the input.
|
| Modifier and Type | Method and Description |
|---|---|
static AndArgumentTypeStrategy |
and(ArgumentTypeStrategy... strategies)
Strategy for a conjunction of multiple
ArgumentTypeStrategys into one like
f(NUMERIC && LITERAL). |
static ExplicitArgumentTypeStrategy |
explicit(DataType expectedDataType)
Strategy for an argument that corresponds to an explicitly defined type casting.
|
static InputTypeStrategy |
explicitSequence(DataType... expectedDataTypes)
Strategy for a function signature of explicitly defined types like
f(STRING, INT). |
static InputTypeStrategy |
explicitSequence(String[] argumentNames,
DataType[] expectedDataTypes)
Strategy for a named function signature of explicitly defined types like
f(s STRING, i INT). |
static OrArgumentTypeStrategy |
or(ArgumentTypeStrategy... strategies)
Strategy for a disjunction of multiple
ArgumentTypeStrategys into one like
f(NUMERIC || STRING). |
static InputTypeStrategy |
or(InputTypeStrategy... strategies)
Strategy for a disjunction of multiple
InputTypeStrategys into one like
f(NUMERIC) || f(STRING). |
static InputTypeStrategy |
sequence(ArgumentTypeStrategy... strategies)
Strategy for a function signature like
f(STRING, NUMERIC) using a sequence of
ArgumentTypeStrategys. |
static InputTypeStrategy |
sequence(String[] argumentNames,
ArgumentTypeStrategy[] strategies)
Strategy for a named function signature like
f(s STRING, n NUMERIC) using a sequence
of ArgumentTypeStrategys. |
static InputTypeStrategy |
varyingSequence(ArgumentTypeStrategy... strategies)
Strategy for a varying function signature like
f(INT, STRING, NUMERIC...) using a
sequence of ArgumentTypeStrategys. |
static InputTypeStrategy |
varyingSequence(String[] argumentNames,
ArgumentTypeStrategy[] strategies)
Strategy for a varying named function signature like
f(i INT, str STRING, num NUMERIC...)
using a sequence of ArgumentTypeStrategys. |
public static final WildcardInputTypeStrategy WILDCARD
public static final OutputArgumentTypeStrategy OUTPUT_IF_NULL
DataType
if available.public static final AnyArgumentTypeStrategy ANY
public static final LiteralArgumentTypeStrategy LITERAL
public static final LiteralArgumentTypeStrategy LITERAL_OR_NULL
public static InputTypeStrategy sequence(ArgumentTypeStrategy... strategies)
f(STRING, NUMERIC) using a sequence of
ArgumentTypeStrategys.public static InputTypeStrategy sequence(String[] argumentNames, ArgumentTypeStrategy[] strategies)
f(s STRING, n NUMERIC) using a sequence
of ArgumentTypeStrategys.public static InputTypeStrategy varyingSequence(ArgumentTypeStrategy... strategies)
f(INT, STRING, NUMERIC...) using a
sequence of ArgumentTypeStrategys. The first n - 1 arguments must be constant. The
n-th argument can occur 0, 1, or more times.public static InputTypeStrategy varyingSequence(String[] argumentNames, ArgumentTypeStrategy[] strategies)
f(i INT, str STRING, num NUMERIC...)
using a sequence of ArgumentTypeStrategys. The first n - 1 arguments must be constant. The
n-th argument can occur 0, 1, or more times.public static InputTypeStrategy explicitSequence(DataType... expectedDataTypes)
f(STRING, INT).
Implicit casts will be inserted if possible.
This is equivalent to using sequence(ArgumentTypeStrategy...) and
explicit(DataType).
public static InputTypeStrategy explicitSequence(String[] argumentNames, DataType[] expectedDataTypes)
f(s STRING, i INT).
Implicit casts will be inserted if possible.
This is equivalent to using sequence(String[], ArgumentTypeStrategy[]) and
explicit(DataType).
public static InputTypeStrategy or(InputTypeStrategy... strategies)
InputTypeStrategys into one like
f(NUMERIC) || f(STRING).public static ExplicitArgumentTypeStrategy explicit(DataType expectedDataType)
public static AndArgumentTypeStrategy and(ArgumentTypeStrategy... strategies)
ArgumentTypeStrategys into one like
f(NUMERIC && LITERAL).
Some ArgumentTypeStrategys cannot contribute an inferred type that is different from
the input type (e.g. LITERAL). Therefore, the order f(X && Y) or f(Y && X)
matters as it defines the precedence in case the result must be casted to a more specific type.
This strategy aims to infer the first more specific, casted type or (if this is not possible)
a type that has been inferred from all ArgumentTypeStrategys.
public static OrArgumentTypeStrategy or(ArgumentTypeStrategy... strategies)
ArgumentTypeStrategys into one like
f(NUMERIC || STRING).
Some ArgumentTypeStrategys cannot contribute an inferred type that is different from
the input type (e.g. LITERAL). Therefore, the order f(X || Y) or f(Y || X)
matters as it defines the precedence in case the result must be casted to a more specific type.
This strategy aims to infer a type that is equal to the input type (to prevent unnecessary casting) or (if this is not possible) the first more specific, casted type.
Copyright © 2014–2020 The Apache Software Foundation. All rights reserved.