public abstract class InferableFunction<InputT,OutputT> extends java.lang.Object implements ProcessFunction<InputT,OutputT>, HasDisplayData
ProcessFunction which is not a functional interface. Concrete subclasses allow
 us to infer type information, which in turn aids Coder
 inference.
 See SimpleFunction for providing robust type information where a SerializableFunction is required.
| Modifier | Constructor and Description | 
|---|---|
| protected  | InferableFunction() | 
| protected  | InferableFunction(ProcessFunction<InputT,OutputT> fn) | 
| Modifier and Type | Method and Description | 
|---|---|
| OutputT | apply(InputT input)Returns the result of invoking this function on the given input. | 
| static <InputT,OutputT> | fromProcessFunctionWithOutputType(ProcessFunction<InputT,OutputT> fn,
                                 TypeDescriptor<OutputT> outputType) | 
| TypeDescriptor<InputT> | getInputTypeDescriptor()Returns a  TypeDescriptorcapturing what is known statically about the input type of
 thisInferableFunctioninstance's most-derived class. | 
| TypeDescriptor<OutputT> | getOutputTypeDescriptor()Returns a  TypeDescriptorcapturing what is known statically about the output type of
 thisInferableFunctioninstance's most-derived class. | 
| void | populateDisplayData(DisplayData.Builder builder)Register display data for the given transform or component. | 
protected InferableFunction()
protected InferableFunction(ProcessFunction<InputT,OutputT> fn)
public OutputT apply(InputT input) throws java.lang.Exception
ProcessFunctionapply in interface ProcessFunction<InputT,OutputT>java.lang.Exceptionpublic static <InputT,OutputT> InferableFunction<InputT,OutputT> fromProcessFunctionWithOutputType(ProcessFunction<InputT,OutputT> fn, TypeDescriptor<OutputT> outputType)
public TypeDescriptor<InputT> getInputTypeDescriptor()
TypeDescriptor capturing what is known statically about the input type of
 this InferableFunction instance's most-derived class.
 See getOutputTypeDescriptor() for more discussion.
public TypeDescriptor<OutputT> getOutputTypeDescriptor()
TypeDescriptor capturing what is known statically about the output type of
 this InferableFunction instance's most-derived class.
 In the normal case of a concrete InferableFunction subclass with no generic type
 parameters of its own (including anonymous inner classes), this will be a complete non-generic
 type, which is good for choosing a default output Coder<OutputT> for the output PCollection<OutputT>.
public void populateDisplayData(DisplayData.Builder builder)
populateDisplayData(DisplayData.Builder) is invoked by Pipeline runners to collect
 display data via DisplayData.from(HasDisplayData). Implementations may call super.populateDisplayData(builder) in order to register display data in the current namespace,
 but should otherwise use subcomponent.populateDisplayData(builder) to use the namespace
 of the subcomponent.
 
By default, does not register any display data. Implementors may override this method to provide their own display data.
populateDisplayData in interface HasDisplayDatabuilder - The builder to populate with display data.HasDisplayData