Class ArrayArgumentTypeHandler<S extends CommandSource>

java.lang.Object
studio.mevera.imperat.command.arguments.type.handlers.ArrayArgumentTypeHandler<S>
Type Parameters:
S - the source type
All Implemented Interfaces:
ArgumentTypeHandler<S>, Prioritizable

public final class ArrayArgumentTypeHandler<S extends CommandSource> extends Object implements ArgumentTypeHandler<S>
Handler for resolving ArgumentType instances for array types.

This handler supports all array types and provides optimized initializers for primitive wrapper arrays. Custom array initializers can be registered for specific component types.

  • Constructor Details

    • ArrayArgumentTypeHandler

      public ArrayArgumentTypeHandler()
      Creates a new ArrayArgumentTypeHandler with default initializers.
  • Method Details

    • registerInitializer

      public <T> void registerInitializer(@NotNull @NotNull Class<T> componentType, @NotNull @NotNull Function<Integer,T[]> initializer)
      Registers a custom array initializer for a specific component type.
      Type Parameters:
      T - the component type
      Parameters:
      componentType - the component type of the array
      initializer - the function that creates new arrays of the specified size
    • canHandle

      public boolean canHandle(@NotNull @NotNull Type type, @NotNull @NotNull TypeWrap<?> wrap)
      Description copied from interface: ArgumentTypeHandler
      Determines if this handler can resolve the given type.
      Specified by:
      canHandle in interface ArgumentTypeHandler<S extends CommandSource>
      Parameters:
      type - the raw type to check
      wrap - the wrapped type for convenience, providing additional type introspection
      Returns:
      true if this handler can handle the type
    • resolve

      @NotNull public <T> @NotNull ArgumentType<S,T> resolve(@NotNull @NotNull Type type, @NotNull @NotNull TypeWrap<?> wrap, @NotNull @NotNull ArgumentTypeLookup<S> lookup)
      Description copied from interface: ArgumentTypeHandler
      Resolves an ArgumentType for the given type.

      This method is called only if ArgumentTypeHandler.canHandle(Type, TypeWrap) returns true. The provided ArgumentTypeLookup can be used to recursively resolve component types for generic types (e.g., the element type of a collection).

      Specified by:
      resolve in interface ArgumentTypeHandler<S extends CommandSource>
      Type Parameters:
      T - the resolved type
      Parameters:
      type - the type to resolve
      wrap - the wrapped type for convenience
      lookup - the lookup function for resolving nested/component types
      Returns:
      the resolved ArgumentType, or null if resolution fails despite canHandle returning true
    • onRegisteringResolver

      public <T> void onRegisteringResolver(@NotNull @NotNull SimpleTypeResolver<S,T> resolver)
      Specified by:
      onRegisteringResolver in interface ArgumentTypeHandler<S extends CommandSource>
    • getPriority

      @NotNull public @NotNull Priority getPriority()
      Specified by:
      getPriority in interface Prioritizable