package com.github.czyzby.kiwi.util.gdx.asset.lazy.provider; import com.badlogic.gdx.utils.Array; /** Utility implementation of {@link ObjectProvider} that produces regular or typed (when constructed with class object) * arrays. Does not rely on reflection. * * @author MJ * @param <Type> type of values stored in the array. */ public class ArrayObjectProvider<Type> implements ObjectProvider<Array<Type>> { private final Class<Type> elementType; /** Produces regular arrays. Note that the object is stateless and immutable, so one instance per application can be * used. */ public ArrayObjectProvider() { elementType = null; } /** Produces typed arrays. * * @param elementType type of stored values. */ public ArrayObjectProvider(final Class<Type> elementType) { this.elementType = elementType; } @Override public Array<Type> provide() { if (elementType != null) { return new Array<Type>(elementType); } return new Array<Type>(); } /** @return {@link ArrayObjectProvider} producing regular arrays. * @param <Type> type of stored values. */ public static <Type> ArrayObjectProvider<Type> getProvider() { return new ArrayObjectProvider<Type>(); } /** @param elementType type of stored values. * @return {@link ArrayObjectProvider} producing typed arrays. * @param <Type> type of stored values. */ public static <Type> ArrayObjectProvider<Type> getProvider(final Class<Type> elementType) { return new ArrayObjectProvider<Type>(elementType); } }