Class CollectionArgumentTypeHandler<S extends CommandSource>
java.lang.Object
studio.mevera.imperat.command.arguments.type.handlers.CollectionArgumentTypeHandler<S>
- Type Parameters:
S- the source type
- All Implemented Interfaces:
ArgumentTypeHandler<S>,Prioritizable
public final class CollectionArgumentTypeHandler<S extends CommandSource>
extends Object
implements ArgumentTypeHandler<S>
Handler for resolving
ArgumentType instances for Collection types.
This handler supports all standard Java collection implementations and allows registration of custom collection initializers.
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a new CollectionArgumentTypeHandler with default initializers. -
Method Summary
Modifier and TypeMethodDescriptionbooleanDetermines if this handler can resolve the given type.@NotNull Priority<C extends Collection<?>>
voidregisterInitializer(@NotNull Class<C> type, @NotNull Supplier<C> supplier) Registers a custom collection initializer.<T> @Nullable ArgumentType<S,T> resolve(@NotNull Type type, @NotNull TypeWrap<?> wrap, @NotNull ArgumentTypeLookup<S> lookup) Resolves anArgumentTypefor the given type.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface studio.mevera.imperat.command.arguments.type.ArgumentTypeHandler
onRegisteringResolver
-
Constructor Details
-
CollectionArgumentTypeHandler
public CollectionArgumentTypeHandler()Creates a new CollectionArgumentTypeHandler with default initializers.
-
-
Method Details
-
registerInitializer
public <C extends Collection<?>> void registerInitializer(@NotNull @NotNull Class<C> type, @NotNull @NotNull Supplier<C> supplier) Registers a custom collection initializer.- Type Parameters:
C- the collection type- Parameters:
type- the collection typesupplier- the supplier that creates new instances
-
canHandle
Description copied from interface:ArgumentTypeHandlerDetermines if this handler can resolve the given type.- Specified by:
canHandlein interfaceArgumentTypeHandler<S extends CommandSource>- Parameters:
type- the raw type to checkwrap- the wrapped type for convenience, providing additional type introspection- Returns:
- true if this handler can handle the type
-
resolve
@Nullable public <T> @Nullable ArgumentType<S,T> resolve(@NotNull @NotNull Type type, @NotNull @NotNull TypeWrap<?> wrap, @NotNull @NotNull ArgumentTypeLookup<S> lookup) Description copied from interface:ArgumentTypeHandlerResolves anArgumentTypefor the given type.This method is called only if
ArgumentTypeHandler.canHandle(Type, TypeWrap)returns true. The providedArgumentTypeLookupcan be used to recursively resolve component types for generic types (e.g., the element type of a collection).- Specified by:
resolvein interfaceArgumentTypeHandler<S extends CommandSource>- Type Parameters:
T- the resolved type- Parameters:
type- the type to resolvewrap- the wrapped type for conveniencelookup- the lookup function for resolving nested/component types- Returns:
- the resolved ArgumentType, or null if resolution fails despite canHandle returning true
-
getPriority
- Specified by:
getPriorityin interfacePrioritizable
-