当前位置: 首页>>代码示例>>Java>>正文


Java Closure类代码示例

本文整理汇总了Java中org.apache.commons.collections4.Closure的典型用法代码示例。如果您正苦于以下问题:Java Closure类的具体用法?Java Closure怎么用?Java Closure使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


Closure类属于org.apache.commons.collections4包,在下文中一共展示了Closure类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: chainedClosure

import org.apache.commons.collections4.Closure; //导入依赖的package包/类
/**
 * Create a new Closure that calls each closure in turn, passing the
 * result into the next closure. The ordering is that of the iterator()
 * method on the collection.
 *
 * @param <E> the type that the closure acts on
 * @param closures  a collection of closures to chain
 * @return the <code>chained</code> closure
 * @throws NullPointerException if the closures collection is null
 * @throws NullPointerException if any closure in the collection is null
 */
@SuppressWarnings("unchecked")
public static <E> Closure<E> chainedClosure(final Collection<? extends Closure<? super E>> closures) {
    if (closures == null) {
        throw new NullPointerException("Closure collection must not be null");
    }
    if (closures.size() == 0) {
        return NOPClosure.<E>nopClosure();
    }
    // convert to array like this to guarantee iterator() ordering
    final Closure<? super E>[] cmds = new Closure[closures.size()];
    int i = 0;
    for (final Closure<? super E> closure : closures) {
        cmds[i++] = closure;
    }
    FunctorUtils.validate(cmds);
    return new ChainedClosure<E>(false, cmds);
}
 
开发者ID:funkemunky,项目名称:HCFCore,代码行数:29,代码来源:ChainedClosure.java

示例2: switchClosure

import org.apache.commons.collections4.Closure; //导入依赖的package包/类
/**
 * Create a new Closure that calls one of the closures depending
 * on the predicates.
 * <p>
 * The Map consists of Predicate keys and Closure values. A closure
 * is called if its matching predicate returns true. Each predicate is evaluated
 * until one returns true. If no predicates evaluate to true, the default
 * closure is called. The default closure is set in the map with a
 * null key. The ordering is that of the iterator() method on the entryset
 * collection of the map.
 *
 * @param <E> the type that the closure acts on
 * @param predicatesAndClosures  a map of predicates to closures
 * @return the <code>switch</code> closure
 * @throws NullPointerException if the map is null
 * @throws NullPointerException if any closure in the map is null
 * @throws ClassCastException  if the map elements are of the wrong type
 */
@SuppressWarnings("unchecked")
public static <E> Closure<E> switchClosure(final Map<Predicate<E>, Closure<E>> predicatesAndClosures) {
    if (predicatesAndClosures == null) {
        throw new NullPointerException("The predicate and closure map must not be null");
    }
    // convert to array like this to guarantee iterator() ordering
    final Closure<? super E> defaultClosure = predicatesAndClosures.remove(null);
    final int size = predicatesAndClosures.size();
    if (size == 0) {
        return (Closure<E>) (defaultClosure == null ? NOPClosure.<E>nopClosure() : defaultClosure);
    }
    final Closure<E>[] closures = new Closure[size];
    final Predicate<E>[] preds = new Predicate[size];
    int i = 0;
    for (final Map.Entry<Predicate<E>, Closure<E>> entry : predicatesAndClosures.entrySet()) {
        preds[i] = entry.getKey();
        closures[i] = entry.getValue();
        i++;
    }
    return new SwitchClosure<E>(false, preds, closures, defaultClosure);
}
 
开发者ID:funkemunky,项目名称:HCFCore,代码行数:40,代码来源:SwitchClosure.java

示例3: processTag

import org.apache.commons.collections4.Closure; //导入依赖的package包/类
/**
 * A tag processor template method which takes as input a closure that is
 * responsible for extracting the information from the tag and saving it to
 * the database. The contents of the closure is called inside the
 * START_DOCUMENT case of the template code.
 * 
 * @param parser
 *            a reference to our StAX XMLStreamReader.
 * @param tagProcessor
 *            a reference to the Closure to process the tag.
 * @throws Exception
 *             if one is thrown.
 */
private void processTag(XMLStreamReader parser,
        Closure<XMLStreamReader> tagProcessor) throws Exception {
    int depth = 0;
    int event = parser.getEventType();
    String startTag = formatTag(parser.getName());
    FOR_LOOP: for (;;) {
        switch (event) {
        case XMLStreamConstants.START_ELEMENT:
            String tagName = formatTag(parser.getName());
            tagProcessor.execute(parser);
            depth++;
            break;
        case XMLStreamConstants.END_ELEMENT:
            tagName = formatTag(parser.getName());
            depth--;
            if (tagName.equals(startTag) && depth == 0) {
                break FOR_LOOP;
            }
            break;
        default:
            break;
        }
        event = parser.next();
    }
}
 
开发者ID:sherlok,项目名称:ruta-ontologies,代码行数:39,代码来源:OwlParser.java

示例4: ifClosure

import org.apache.commons.collections4.Closure; //导入依赖的package包/类
/**
 * Factory method that performs validation.
 *
 * @param <E> the type that the closure acts on
 * @param predicate  predicate to switch on
 * @param trueClosure  closure used if true
 * @param falseClosure  closure used if false
 * @return the <code>if</code> closure
 * @throws NullPointerException if any argument is null
 */
public static <E> Closure<E> ifClosure(final Predicate<? super E> predicate,
                                       final Closure<? super E> trueClosure,
                                       final Closure<? super E> falseClosure) {
    if (predicate == null) {
        throw new NullPointerException("Predicate must not be null");
    }
    if (trueClosure == null || falseClosure == null) {
        throw new NullPointerException("Closures must not be null");
    }
    return new IfClosure<E>(predicate, trueClosure, falseClosure);
}
 
开发者ID:funkemunky,项目名称:HCFCore,代码行数:22,代码来源:IfClosure.java

示例5: copy

import org.apache.commons.collections4.Closure; //导入依赖的package包/类
/**
 * Clone the closures to ensure that the internal reference can't be messed with.
 *
 * @param closures  the closures to copy
 * @return the cloned closures
 */
@SuppressWarnings("unchecked")
static <E> Closure<E>[] copy(final Closure<? super E>... closures) {
    if (closures == null) {
        return null;
    }
    return (Closure<E>[]) closures.clone();
}
 
开发者ID:funkemunky,项目名称:HCFCore,代码行数:14,代码来源:FunctorUtils.java

示例6: validate

import org.apache.commons.collections4.Closure; //导入依赖的package包/类
/**
 * Validate the closures to ensure that all is well.
 *
 * @param closures  the closures to validate
 */
static void validate(final Closure<?>... closures) {
    if (closures == null) {
        throw new NullPointerException("The closure array must not be null");
    }
    for (int i = 0; i < closures.length; i++) {
        if (closures[i] == null) {
            throw new NullPointerException(
                    "The closure array must not contain a null closure, index " + i + " was null");
        }
    }
}
 
开发者ID:funkemunky,项目名称:HCFCore,代码行数:17,代码来源:FunctorUtils.java

示例7: whileClosure

import org.apache.commons.collections4.Closure; //导入依赖的package包/类
/**
 * Factory method that performs validation.
 *
 * @param <E> the type that the closure acts on
 * @param predicate  the predicate used to evaluate when the loop terminates, not null
 * @param closure  the closure the execute, not null
 * @param doLoop  true to act as a do-while loop, always executing the closure once
 * @return the <code>while</code> closure
 * @throws NullPointerException if the predicate or closure is null
 */
public static <E> Closure<E> whileClosure(final Predicate<? super E> predicate,
                                          final Closure<? super E> closure, final boolean doLoop) {
    if (predicate == null) {
        throw new NullPointerException("Predicate must not be null");
    }
    if (closure == null) {
        throw new NullPointerException("Closure must not be null");
    }
    return new WhileClosure<E>(predicate, closure, doLoop);
}
 
开发者ID:funkemunky,项目名称:HCFCore,代码行数:21,代码来源:WhileClosure.java

示例8: SwitchClosure

import org.apache.commons.collections4.Closure; //导入依赖的package包/类
/**
 * Hidden constructor for the use by the static factory methods.
 *
 * @param clone  if {@code true} the input arguments will be cloned
 * @param predicates  array of predicates, no nulls
 * @param closures  matching array of closures, no nulls
 * @param defaultClosure  the closure to use if no match, null means nop
 */
@SuppressWarnings("unchecked")
private SwitchClosure(final boolean clone, final Predicate<? super E>[] predicates,
                      final Closure<? super E>[] closures, final Closure<? super E> defaultClosure) {
    super();
    iPredicates = clone ? FunctorUtils.copy(predicates) : predicates;
    iClosures = clone ? FunctorUtils.copy(closures) : closures;
    iDefault = (Closure<? super E>) (defaultClosure == null ? NOPClosure.<E>nopClosure() : defaultClosure);
}
 
开发者ID:funkemunky,项目名称:HCFCore,代码行数:17,代码来源:SwitchClosure.java

示例9: test

import org.apache.commons.collections4.Closure; //导入依赖的package包/类
public void test() {
    List<A> aList = new ArrayList<A>();
    A a = new A(1);
    aList.add(a);
    aList.add(new A(2));
    CollectionUtils.forAllDo(aList, new Closure<A>() {
        @Override
        public void execute(A input) {
            input.setId(5);
        }
    });

    System.out.println(aList);
}
 
开发者ID:Qunzer,项目名称:learningJava,代码行数:15,代码来源:CollectionUtilExample.java

示例10: generateIOExceptionClosure

import org.apache.commons.collections4.Closure; //导入依赖的package包/类
private static <T>Closure<T> generateIOExceptionClosure() {
    return new CatchAndRethrowClosure<T>() {
        @Override
        protected void executeAndThrow(final T input) throws IOException {
            throw new IOException();
        }
    };
}
 
开发者ID:DIVERSIFY-project,项目名称:sosiefier,代码行数:9,代码来源:CatchAndRethrowClosureTest.java

示例11: generateNullPointerExceptionClosure

import org.apache.commons.collections4.Closure; //导入依赖的package包/类
private static <T>Closure<T> generateNullPointerExceptionClosure() {
    return new CatchAndRethrowClosure<T>() {
        @Override
        protected void executeAndThrow(final T input) {
            throw new NullPointerException();
        }
    };
}
 
开发者ID:DIVERSIFY-project,项目名称:sosiefier,代码行数:9,代码来源:CatchAndRethrowClosureTest.java

示例12: generateNoExceptionClosure

import org.apache.commons.collections4.Closure; //导入依赖的package包/类
private static <T>Closure<T> generateNoExceptionClosure() {
    return new CatchAndRethrowClosure<T>() {
        @Override
        protected void executeAndThrow(final T input) {
        }
    };
}
 
开发者ID:DIVERSIFY-project,项目名称:sosiefier,代码行数:8,代码来源:CatchAndRethrowClosureTest.java

示例13: closureSanityTests

import org.apache.commons.collections4.Closure; //导入依赖的package包/类
@Test
public void closureSanityTests() throws Exception {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),this, "closureSanityTests");
    final Closure<?> closure = generateClosure();
    fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),4410,closure);
    fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
 
开发者ID:DIVERSIFY-project,项目名称:sosiefier,代码行数:8,代码来源:AbstractClosureTest.java

示例14: inspectTypes

import org.apache.commons.collections4.Closure; //导入依赖的package包/类
private static Map<Integer, String> inspectTypes() {
	Collection<Field> fields = CollectionUtils.select(Arrays.asList( java.sql.Types.class.getFields() ), (Predicate<? super Field>) new Predicate<Field>() {
		@Override
		public boolean evaluate(Field f) {
			
					return Modifier.isStatic(f.getModifiers())
							&& f.getType().getName().equals("int");
		}
	});
			
	final HashMap<Integer, String> intToName = new HashMap<Integer, String>( 0 );
	
	CollectionUtils.forAllDo(fields, (Closure<? super Field>) new Closure<Field>() {

		@Override
		public void execute(Field arg0) {
			try {
				String name = arg0.getName();
				Integer val;
				val = (Integer)( arg0.get(java.sql.Types.class) );
				intToName.put(val, name );
			} catch (IllegalArgumentException | IllegalAccessException e) {
				// ok, we cannot access it
			}
		}
	});
	return intToName;
}
 
开发者ID:danidemi,项目名称:jlubricant,代码行数:29,代码来源:TypesUtils.java

示例15: execute

import org.apache.commons.collections4.Closure; //导入依赖的package包/类
/**
 * Execute a list of closures.
 *
 * @param input  the input object passed to each closure
 */
public void execute(final E input) {
    for (final Closure<? super E> iClosure : iClosures) {
        iClosure.execute(input);
    }
}
 
开发者ID:funkemunky,项目名称:HCFCore,代码行数:11,代码来源:ChainedClosure.java


注:本文中的org.apache.commons.collections4.Closure类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。