View Javadoc
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  
18  package org.apache.commons.lang3.function;
19  
20  import java.util.function.Consumer;
21  import java.util.function.Function;
22  
23  /**
24   * Provides {@link Consumer} instances.
25   *
26   * @since 3.13.0
27   */
28  public class Consumers {
29  
30      /** NOP singleton. */
31      @SuppressWarnings("rawtypes")
32      private static final Consumer NOP = Function.identity()::apply;
33  
34      /**
35       * Applies the given {@link Consumer} action to the object if the consumer is not {@code null}. Otherwise, does nothing.
36       *
37       * @param consumer the consumer to consume.
38       * @param object   the object to be consumed.
39       *
40       * @param <T>      the type of the argument the consumer accepts.
41       * @since 3.15.0
42       */
43      public static <T> void accept(final Consumer<T> consumer, final T object) {
44          if (consumer != null) {
45              consumer.accept(object);
46          }
47      }
48  
49      /**
50       * Gets the NOP Consumer singleton.
51       *
52       * @param <T> type type to consume.
53       * @return the NOP Consumer singleton.
54       */
55      @SuppressWarnings("unchecked")
56      public static <T> Consumer<T> nop() {
57          return NOP;
58      }
59  
60      private Consumers() {
61          // No instances.
62      }
63  }