1 package jfun.yan; 2 3 import java.util.Arrays ; 4 5 import jfun.util.Misc; 6 import jfun.util.StringUtils; 7 final class SequenceComponent<T> extends Component<T> { 8 private final Creator<T>[] ccs; 9 10 SequenceComponent(final Creator<T>[] ccs) { 11 this.ccs = ccs; 12 } 13 14 public Class <T> getType() { 15 return ccs[ccs.length-1].getType(); 16 } 17 public boolean isConcrete(){ 18 return ccs[ccs.length-1].isConcrete(); 19 } 20 public T create(Dependency dep){ 21 T r = null; 22 for(int i=0;i<ccs.length;i++){ 23 r = ccs[i].create(dep); 24 } 25 return r; 26 } 27 public Class <T> verify(Dependency dep){ 28 Class <T> r = null; 29 for(int i=0;i<ccs.length;i++){ 30 r = ccs[i].verify(dep); 31 } 32 return r; 33 } 34 35 public boolean equals(Object obj) { 36 if(obj instanceof SequenceComponent){ 37 final SequenceComponent other = (SequenceComponent)obj; 38 return Arrays.equals(ccs, other.ccs); 39 } 40 else return false; 41 } 42 public int hashCode() { 43 return Misc.getArrayHashcode(ccs); 44 } 45 public String toString() { 46 return "sequence " + StringUtils.listArray("[",",","]", ccs); 47 } 48 public boolean isSingleton(){ 49 return ccs.length==0 || ccs[ccs.length-1].isSingleton(); 50 } 51 } 52 | Popular Tags |