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
,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
-
AbstractSupplier
public AbstractSupplier()
-
-
Method Details
-
asThis
Returns 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
.
-