1 8 9 15 package jfun.yan; 16 17 import jfun.yan.function.Function; 18 19 25 final class IndexedPropertyReader implements Function { 26 private final jfun.util.beans.Bean bean; 27 private final String prop; 28 private final int ind; 29 public boolean isConcrete(){ 30 return false; 31 } 32 IndexedPropertyReader(final jfun.util.beans.Bean bean, 33 final String prop, final int ind) { 34 this.bean = bean; 35 this.prop = prop; 36 this.ind = ind; 37 } 38 39 public Object call(Object [] args) throws Throwable { 40 return bean.getProperty(prop, ind); 41 } 42 public Class [] getParameterTypes() { 43 return Utils.no_params; 44 } 45 public Class getReturnType() { 46 return bean.getBeanType().getIndexedPropertyType(prop); 47 } 48 public boolean equals(Object obj) { 49 if(obj instanceof IndexedPropertyReader){ 50 final IndexedPropertyReader other = (IndexedPropertyReader)obj; 51 return ind==other.ind && prop.equals(other.prop) && 52 bean.equals(other.bean); 53 } 54 else return false; 55 } 56 public int hashCode() { 57 return (bean.hashCode() * 31 + prop.hashCode())*31+ind; 58 } 59 public String toString() { 60 return bean.toString() + "." + prop+"["+ind+"]"; 61 } 62 public String getName(){ 63 return prop; 64 } 65 } 66 | Popular Tags |