public static interface CommandLine.IFactory
CommandLine.Command.subcommands(), CommandLine.Option.converter(), CommandLine.Parameters.converter() and CommandLine.Command.versionProvider().
The factory is also used to instantiate the Collection or Map implementation class for multi-value
options and positional parameters with an abstract type, like List<String>.
You may provide a custom implementation of this interface. For example, a custom factory implementation could delegate to a dependency injection container that provides the requested instance.
Custom factory implementations should always fall back to the default factory if instantiation failed. For example:
class MyFactory implements IFactory {
private final ApplicationContext applicationContext = getAppContext();
public <T> T create(Class<T> cls) throws Exception {
try {
applicationContext.getBean(cls);
} catch (Exception ex) {
CommandLine.defaultFactory().create(cls);
}
}
}
Tip: custom factory implementations that have resources that need to be closed when done should consider
implementing java.lang.AutoCloseable or java.io.Closeable. This allows applications to use
the following idiom for configuring picocli before running their application:
public static void main(String[] args) {
int exitCode = 0;
try (MyFactory factory = createMyFactory()) {
exitCode = new CommandLine(MyClass.class, factory)
.setXxx(x) // configure the picocli parser...
.execute(args);
}
System.exit(exitCode);
}
| Modifier and Type | Method and Description |
|---|---|
<K> K |
create(Class<K> cls)
Returns an instance of the specified class.
|
<K> K create(Class<K> cls) throws Exception
K - the type of the object to returncls - the class of the object to returnException - an exception detailing what went wrong when creating or obtaining the instance