package jalse.entities.annotations; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import jalse.entities.Entity; import jalse.entities.EntityContainer; import jalse.entities.functions.StreamEntitiesFunction; import jalse.entities.methods.StreamEntitiesMethod; /** * An {@link Entity} type annotation for: * <ul> * <li>{@link EntityContainer#streamEntities()}</li> * <li>{@link EntityContainer#streamEntitiesOfType(Class)}</li> * <li>{@link EntityContainer#streamEntitiesAsType(Class)}</li> * </ul> * The method is selected based on whether type filtering is enabled ({@link #ofType()}). <br> * <br> * See {@link StreamEntitiesFunction} for acceptable method signatures. * * @author Elliot Ford * * @see StreamEntitiesMethod * */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface StreamEntities { /** * Default type filtering ({@code true}). */ public static final boolean DEFAULT_OF_TYPE = true; /** * Whether filtering of type is performed. * * @return Filter of type. * * @see StreamEntities#DEFAULT_OF_TYPE */ boolean ofType() default DEFAULT_OF_TYPE; }