Advertisement
Guest User

Untitled

a guest
Sep 7th, 2011
394
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.12 KB | None | 0 0
  1. public class ImBase {
  2.     protected ImBase(Builder b) {
  3.     }
  4.  
  5.     public static class Builder<B extends Builder> {
  6.         protected final BuilderHolder<B> holder;
  7.  
  8.         public Builder() {
  9.             this.holder = new BuilderHolder(this);
  10.         }
  11.  
  12.         public B setFoo(String value) {
  13.             return holder.b;
  14.         }
  15.  
  16.         public B setBar(int value) {
  17.             return holder.b;
  18.         }
  19.  
  20.         public ImBase build() {
  21.             return new ImBase(holder.b);
  22.  
  23.         }
  24.         protected static class BuilderHolder<T extends Builder> {
  25.             public final T b;
  26.  
  27.             private BuilderHolder(T b) {
  28.                 this.b = b;
  29.             }
  30.         }
  31.     }
  32. }
  33.  
  34. public class ImBaseChild extends ImBase {
  35.     protected ImBaseChild(Builder b) {
  36.         super(b);
  37.     }
  38.  
  39.     public static class Builder extends ImBase.Builder<Builder> {
  40.         public Builder setGer(double value) {
  41.             return holder.b;
  42.         }
  43.  
  44.         @Override
  45.         public ImBaseChild build() {
  46.             return new ImBaseChild(this);
  47.         }
  48.     }
  49. }
  50.  
  51. public class ImMain {
  52.     public static void main(String[] args) {
  53.         ImBase imBase = new ImBase.Builder().setBar(1).setFoo("22").build();
  54.         ImBaseChild imBaseChild1 = new ImBaseChild.Builder().setGer(3.3).setBar(1).setFoo("22").build();
  55.     }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement