1 21 package com.db4o.reflect.generic; 22 23 import com.db4o.foundation.*; 24 import com.db4o.reflect.*; 25 26 29 public class GenericField implements ReflectField, DeepClone{ 30 31 private final String _name; 32 private final GenericClass _type; 33 private final boolean _primitive; 34 private final boolean _array; 35 private final boolean _nDimensionalArray; 36 37 private int _index = -1; 38 39 public GenericField(String name, ReflectClass clazz, boolean primitive, boolean array, boolean nDimensionalArray) { 40 _name = name; 41 _type = (GenericClass)clazz; 42 _primitive = primitive; 43 _array = array; 44 _nDimensionalArray = nDimensionalArray; 45 } 46 47 public Object deepClone(Object obj) { 48 Reflector reflector = (Reflector)obj; 49 ReflectClass newReflectClass = null; 50 if(_type != null){ 51 newReflectClass = reflector.forName(_type.getName()); 52 } 53 return new GenericField(_name, newReflectClass, _primitive, _array, _nDimensionalArray); 54 } 55 56 public Object get(Object onObject) { 57 return ((GenericObject)onObject).get(_index); 59 } 60 61 public String getName() { 62 return _name; 63 } 64 65 public ReflectClass getFieldType() { 66 if(_array){ 67 return _type.arrayClass(); 68 } 69 return _type; 70 } 71 72 public boolean isPublic() { 73 return true; 74 } 75 76 public boolean isPrimitive(){ 77 return _primitive; 78 } 79 80 public boolean isStatic() { return false; 82 } 83 84 public boolean isTransient() { 85 return false; 86 } 87 88 public void set(Object onObject, Object value) { 89 ((GenericObject)onObject).set(_index,value); 93 } 94 95 public void setAccessible() { 96 } 98 99 void setIndex(int index) { 100 _index = index; 101 } 102 } 103 | Popular Tags |