1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.commons.collections4.functors; 18 19 import java.io.Serializable; 20 21 import org.apache.commons.collections4.Predicate; 22 23 /** 24 * Predicate implementation that returns true if the input is the same object 25 * as the one stored in this predicate. 26 * 27 * @param <T> the type of the input to the predicate. 28 * @since 3.0 29 */ 30 public final class IdentityPredicate<T> extends AbstractPredicate<T> implements Serializable { 31 32 /** Serial version UID */ 33 private static final long serialVersionUID = -89901658494523293L; 34 35 /** 36 * Creates the identity predicate. 37 * 38 * @param <T> the type that the predicate queries 39 * @param object the object to compare to 40 * @return the predicate 41 */ 42 public static <T> Predicate<T> identityPredicate(final T object) { 43 if (object == null) { 44 return NullPredicate.<T>nullPredicate(); 45 } 46 return new IdentityPredicate<>(object); 47 } 48 49 /** The value to compare to */ 50 private final T iValue; 51 52 /** 53 * Constructor that performs no validation. 54 * Use {@code identityPredicate} if you want that. 55 * 56 * @param object the object to compare to 57 */ 58 public IdentityPredicate(final T object) { 59 iValue = object; 60 } 61 62 /** 63 * Gets the value. 64 * 65 * @return the value 66 * @since 3.1 67 */ 68 public T getValue() { 69 return iValue; 70 } 71 72 /** 73 * Evaluates the predicate returning true if the input object is identical to 74 * the stored object. 75 * 76 * @param object the input object 77 * @return true if input is the same object as the stored value 78 */ 79 @Override 80 public boolean test(final T object) { 81 return iValue == object; 82 } 83 84 }