test/tools/javac/lambda/lambdaExecution/TBlock.java

Tue, 12 Mar 2013 16:02:43 +0000

author
mcimadamore
date
Tue, 12 Mar 2013 16:02:43 +0000
changeset 1628
5ddecb91d843
parent 0
959103a6100f
permissions
-rw-r--r--

8009545: Graph inference: dependencies between inference variables should be set during incorporation
Summary: Move all transitivity checks into the incorporation round
Reviewed-by: jjg

aoqi@0 1 /**
aoqi@0 2 * Performs operations upon an input object which may modify that object and/or
aoqi@0 3 * external state (other objects).
aoqi@0 4 *
aoqi@0 5 * <p>All block implementations are expected to:
aoqi@0 6 * <ul>
aoqi@0 7 * <li>When used for aggregate operations upon many elements blocks
aoqi@0 8 * should not assume that the {@code apply} operation will be called upon
aoqi@0 9 * elements in any specific order.</li>
aoqi@0 10 * </ul>
aoqi@0 11 *
aoqi@0 12 * @param <T> The type of input objects to {@code apply}.
aoqi@0 13 */
aoqi@0 14 public interface TBlock<T> {
aoqi@0 15
aoqi@0 16 /**
aoqi@0 17 * Performs operations upon the provided object which may modify that object
aoqi@0 18 * and/or external state.
aoqi@0 19 *
aoqi@0 20 * @param t an input object
aoqi@0 21 */
aoqi@0 22 void apply(T t);
aoqi@0 23
aoqi@0 24 /**
aoqi@0 25 * Returns a Block which performs in sequence the {@code apply} methods of
aoqi@0 26 * multiple Blocks. This Block's {@code apply} method is performed followed
aoqi@0 27 * by the {@code apply} method of the specified Block operation.
aoqi@0 28 *
aoqi@0 29 * @param other an additional Block which will be chained after this Block
aoqi@0 30 * @return a Block which performs in sequence the {@code apply} method of
aoqi@0 31 * this Block and the {@code apply} method of the specified Block operation
aoqi@0 32 */
aoqi@0 33 public default TBlock<T> chain(TBlock<? super T> other) {
aoqi@0 34 return (T t) -> { apply(t); other.apply(t); };
aoqi@0 35 }
aoqi@0 36 }

mercurial