Package org.apache.commons.io.build
Class AbstractSupplier<T,B extends AbstractSupplier<T,B>>  
java.lang.Object
org.apache.commons.io.build.AbstractSupplier<T,B> 
- Type Parameters:
- T- the type of instances to build.
- B- the type of builder subclass.
- All Implemented Interfaces:
- IOSupplier<T>
- Direct Known Subclasses:
- AbstractOrigin,- AbstractOriginSupplier,- SimplePathVisitor.AbstractBuilder,- WildcardFileFilter.Builder
public abstract class AbstractSupplier<T,B extends AbstractSupplier<T,B>>  
extends Object
implements IOSupplier<T>
Abstracts supplying an instance of 
T.
 Extend this class to implement the builder pattern.
For example, here is a builder, a domain class, and a test.
The builder:
    /**
     * Builds Foo instances.
     */
    public static class Builder extends AbstractSupplier<Foo, Builder> {
        private String bar1;
        private String bar2;
        private String bar3;
        /**
         * Builds a new Foo.
         */
        @Override
        public Foo get() {
            return new Foo(bar1, bar2, bar3);
        }
        public Builder setBar1(final String bar1) {
            this.bar1 = bar1;
            return this;
        }
        public Builder setBar2(final String bar2) {
            this.bar2 = bar2;
            return this;
        }
        public Builder setBar3(final String bar3) {
            this.bar3 = bar3;
            return this;
        }
    }
 
 The domain class:
    /**
     * Domain class.
     */
    public class Foo {
        public static Builder builder() {
            return new Builder();
        }
        private final String bar1;
        private final String bar2;
        private final String bar3;
        private Foo(final String bar1, final String bar2, final String bar3) {
            this.bar1 = bar1;
            this.bar2 = bar2;
            this.bar3 = bar3;
        }
        public String getBar1() {
            return bar1;
        }
        public String getBar2() {
            return bar2;
        }
        public String getBar3() {
            return bar3;
        }
    }
 
 The test:
    @Test
    public void test() {
        final Foo foo = Foo.builder()
            .setBar1("value1")
            .setBar2("value2")
            .setBar3("value3")
            .get();
        assertEquals("value1", foo.getBar1());
        assertEquals("value2", foo.getBar2());
        assertEquals("value3", foo.getBar3());
    }
 - Since:
- 2.12.0
- 
Constructor Details- 
AbstractSupplierpublic AbstractSupplier()Constructs a new instance for subclasses.
 
- 
- 
Method Details- 
asThisReturns this instance typed as the subclass typeB.This is the same as the expression: (B) this - Returns:
- this instance typed as the subclass type B.
 
 
-