package com.apobates.forum.utils.lang;

import java.util.function.Predicate;

/**
 * 单参数的执行函数
 * 
 * @param <T> 条件的参数类型
 * @author xiaofanku
 * @since 20200805
 */
public interface PredicateFunction<T> {
    /**
     * 返回函数的执行条件
     * @return 
     */
    public Predicate<T> getCondtion();
    
    /**
     * 返回函数的参数
     * @return 
     */
    public T getArgument();
    
    /**
     * 为执行条件绑定参数并执行
     * @return 
     */
    default boolean execute(){
        return getCondtion().test(getArgument());
    }
}