001/* 002 * jPOS Project [http://jpos.org] 003 * Copyright (C) 2000-2026 jPOS Software SRL 004 * 005 * This program is free software: you can redistribute it and/or modify 006 * it under the terms of the GNU Affero General Public License as 007 * published by the Free Software Foundation, either version 3 of the 008 * License, or (at your option) any later version. 009 * 010 * This program is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU Affero General Public License for more details. 014 * 015 * You should have received a copy of the GNU Affero General Public License 016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 017 */ 018 019package org.jpos.function; 020 021import java.util.Objects; 022 023/** 024 * Three-argument variant of {@link java.util.function.Consumer}. 025 * 026 * @param <T> first argument type 027 * @param <U> second argument type 028 * @param <V> third argument type 029 */ 030@FunctionalInterface 031public interface TriConsumer<T, U, V> { 032 /** 033 * Performs this operation on the given arguments. 034 * 035 * @param t first argument 036 * @param u second argument 037 * @param v third argument 038 */ 039 void accept(T t, U u, V v); 040 041 /** 042 * Returns a composed {@code TriConsumer} that runs this consumer and then {@code after}. 043 * 044 * @param after the consumer to run after this one 045 * @return the composed consumer 046 */ 047 default TriConsumer<T, U, V> andThen(TriConsumer<? super T, ? super U, ? super V> after) { 048 Objects.requireNonNull(after); 049 return (t, u, v) -> { 050 accept(t, u, v); 051 after.accept(t, u, v); 052 }; 053 } 054}