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

com.nntk.restplus.util.GenericBuilder Maven / Gradle / Ivy

package com.nntk.restplus.util;

import java.util.ArrayList;
import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Supplier;

public class GenericBuilder {

    private final Supplier instantiator;

    private List> instanceModifiers = new ArrayList<>();

    public GenericBuilder(Supplier instantiator) {
        this.instantiator = instantiator;
    }

    public static  GenericBuilder of(Supplier instantiator) {
        return new GenericBuilder(instantiator);
    }

    public  GenericBuilder with(BiConsumer consumer, U value) {
        Consumer c = instance -> consumer.accept(instance, value);
        instanceModifiers.add(c);
        return this;
    }

    public T build() {
        T value = instantiator.get();
        instanceModifiers.forEach(modifier -> modifier.accept(value));
        instanceModifiers.clear();
        return value;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy