KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jfun > yan > FieldFunction


1 package jfun.yan;
2 import jfun.util.Misc;
3 import jfun.util.SerializableField;
4 import jfun.yan.function.Function;
5
6 /**
7  * Codehaus.org.
8  *
9  * @author Ben Yu
10  *
11  */

12 final class FieldFunction implements Function{
13   private final Object JavaDoc obj;
14   private final jfun.util.SerializableField fld;
15   private static final Class JavaDoc[] param_types = new Class JavaDoc[0];
16   public Object JavaDoc call(Object JavaDoc[] args)
17   throws IllegalAccessException JavaDoc{
18     return fld.getField().get(obj);
19   }
20   public Class JavaDoc[] getParameterTypes() {
21     return param_types;
22   }
23   public Class JavaDoc getReturnType() {
24     return fld.getField().getType();
25   }
26   public boolean isConcrete(){
27     return false;
28   }
29   FieldFunction(final Object JavaDoc obj, final java.lang.reflect.Field JavaDoc fld) {
30     this.obj = obj;
31     this.fld = new SerializableField(fld);
32   }
33   
34   public boolean equals(Object JavaDoc other) {
35     if(other instanceof FieldFunction){
36       final FieldFunction m2 = (FieldFunction)other;
37       return obj==m2.obj && fld.equals(m2.fld);
38     }
39     else return false;
40   }
41   public String JavaDoc getName() {
42     return fld.getField().getName();
43   }
44   public int hashCode() {
45     return Misc.hashcode(obj)*31+fld.hashCode();
46   }
47   public String JavaDoc toString() {
48     return fld.toString();
49   }
50 }
51
Popular Tags