com.abubusoft.kripton.common.Predicate Maven / Gradle / Ivy
Show all versions of kripton-core Show documentation
/*******************************************************************************
* Copyright 2016-2019 Francesco Benincasa ([email protected])
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
******************************************************************************/
package com.abubusoft.kripton.common;
// TODO: Auto-generated Javadoc
/**
* Determines a true or false value for a given input.
*
*
* The Predicates class provides common predicates and related
* utilities.
*
*
* See the Guava User Guide article on the use
* of {@code
* Predicate}.
*
* @author Kevin Bourrillion
* @param
* the generic type
* @since 2.0 (imported from Google Collections Library)
*/
public interface Predicate {
/**
* Returns the result of applying this predicate to {@code input}. This
* method is generally expected, but not absolutely required, to have
* the following properties:
*
*
* - Its execution does not cause any observable side effects.
*
- The computation is consistent with equals; that is,
* Objects#equal{@code (a, b)} implies that
* {@code predicate.apply(a) ==
* predicate.apply(b))}.
*
*
* @param input
* the input
* @return true, if successful
* @throws NullPointerException
* if {@code input} is null and this predicate does not accept
* null arguments
*/
boolean apply(T input);
/**
* Indicates whether another object is equal to this predicate.
*
*
* Most implementations will have no reason to override the behavior of
* {@link Object#equals}. However, an implementation may also choose to
* return {@code true} whenever {@code object} is a {@link Predicate} that
* it considers interchangeable with this one. "Interchangeable"
* typically means that {@code this.apply(t) == that.apply(t)} for
* all {@code t} of type {@code T}). Note that a {@code false} result from
* this method does not imply that the predicates are known not to be
* interchangeable.
*
* @param object
* the object
* @return true, if successful
*/
@Override
boolean equals(Object object);
}