All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pro.projo.vigintuples.Intermediate Maven / Gradle / Ivy

The newest version!
//                                                                          //
// Copyright 2017 - 2023 Mirko Raner                                        //
//                                                                          //
// 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 pro.projo.vigintuples;

import java.util.function.Function;
import pro.projo.internal.Prototype;
/**/
/**
*
* This interface defines Projo's intermediate interface for objects with 20 fields.
*
* @param <_Artifact_> the artifact type generated by the factory
*
* @author Mirko Raner
**/
/**/
public interface Intermediate<_Artifact_> extends Prototype<_Artifact_>
{
    /**/

    /**
    * Creates a new Projo factory.
    *
    * @param first the first parameter
    * @param second the second parameter
    * @param third the third parameter
    * @param fourth the fourth parameter
    * @param fifth the fifth parameter
    * @param sixth the sixth parameter
    * @param seventh the seventh parameter
    * @param eighth the eighth parameter
    * @param ninth the ninth parameter
    * @param tenth the tenth parameter
    * @param eleventh the eleventh parameter
    * @param twelfth the twelfth parameter
    * @param thirteenth the thirteenth parameter
    * @param fourteenth the fourteenth parameter
    * @param fifteenth the fifteenth parameter
    * @param sixteenth the sixteenth parameter
    * @param seventeenth the seventeenth parameter
    * @param eighteenth the eighteenth parameter
    * @param nineteenth the nineteenth parameter
    * @param twentieth the twentieth parameter
    * @param <_First_> the type of the first field
    * @param <_Second_> the type of the second field
    * @param <_Third_> the type of the third field
    * @param <_Fourth_> the type of the fourth field
    * @param <_Fifth_> the type of the fifth field
    * @param <_Sixth_> the type of the sixth field
    * @param <_Seventh_> the type of the seventh field
    * @param <_Eighth_> the type of the eighth field
    * @param <_Ninth_> the type of the ninth field
    * @param <_Tenth_> the type of the tenth field
    * @param <_Eleventh_> the type of the eleventh field
    * @param <_Twelfth_> the type of the twelfth field
    * @param <_Thirteenth_> the type of the thirteenth field
    * @param <_Fourteenth_> the type of the fourteenth field
    * @param <_Fifteenth_> the type of the fifteenth field
    * @param <_Sixteenth_> the type of the sixteenth field
    * @param <_Seventeenth_> the type of the seventeenth field
    * @param <_Eighteenth_> the type of the eighteenth field
    * @param <_Nineteenth_> the type of the nineteenth field
    * @param <_Twentieth_> the type of the twentieth field
    * @return a new Projo factory
    **/
    public default <_First_, _Second_, _Third_, _Fourth_, _Fifth_, _Sixth_, _Seventh_, _Eighth_, _Ninth_, _Tenth_, _Eleventh_, _Twelfth_, _Thirteenth_, _Fourteenth_, _Fifteenth_, _Sixteenth_, _Seventeenth_, _Eighteenth_, _Nineteenth_, _Twentieth_> Factory<_Artifact_, _First_, _Second_, _Third_, _Fourth_, _Fifth_, _Sixth_, _Seventh_, _Eighth_, _Ninth_, _Tenth_, _Eleventh_, _Twelfth_, _Thirteenth_, _Fourteenth_, _Fifteenth_, _Sixteenth_, _Seventeenth_, _Eighteenth_, _Nineteenth_, _Twentieth_> with(Function<_Artifact_, _First_> first , Function<_Artifact_, _Second_> second, Function<_Artifact_, _Third_> third, Function<_Artifact_, _Fourth_> fourth, Function<_Artifact_, _Fifth_> fifth, Function<_Artifact_, _Sixth_> sixth, Function<_Artifact_, _Seventh_> seventh, Function<_Artifact_, _Eighth_> eighth, Function<_Artifact_, _Ninth_> ninth, Function<_Artifact_, _Tenth_> tenth, Function<_Artifact_, _Eleventh_> eleventh, Function<_Artifact_, _Twelfth_> twelfth, Function<_Artifact_, _Thirteenth_> thirteenth, Function<_Artifact_, _Fourteenth_> fourteenth, Function<_Artifact_, _Fifteenth_> fifteenth, Function<_Artifact_, _Sixteenth_> sixteenth, Function<_Artifact_, _Seventeenth_> seventeenth, Function<_Artifact_, _Eighteenth_> eighteenth, Function<_Artifact_, _Nineteenth_> nineteenth, Function<_Artifact_, _Twentieth_> twentieth)
    {
        @SuppressWarnings("unchecked")
        Factory<_Artifact_, _First_, _Second_, _Third_, _Fourth_, _Fifth_, _Sixth_, _Seventh_, _Eighth_, _Ninth_, _Tenth_, _Eleventh_, _Twelfth_, _Thirteenth_, _Fourteenth_, _Fifteenth_, _Sixteenth_, _Seventeenth_, _Eighteenth_, _Nineteenth_, _Twentieth_> factory = (argument1, argument2, argument3, argument4, argument5, argument6, argument7, argument8, argument9, argument10, argument11, argument12, argument13, argument14, argument15, argument16, argument17, argument18, argument19, argument20) ->
        {
            /**/
            return initialize().members(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth, sixteenth, seventeenth, eighteenth, nineteenth, twentieth).with(argument1, argument2, argument3, argument4, argument5, argument6, argument7, argument8, argument9, argument10, argument11, argument12, argument13, argument14, argument15, argument16, argument17, argument18, argument19, argument20);
        };
        return factory;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy