1 21 package com.db4o.test.reflect.self; 22 23 import java.util.*; 24 25 import com.db4o.reflect.self.*; 26 27 28 public class RegressionDogSelfReflectionRegistry extends SelfReflectionRegistry { 29 private final static Hashtable CLASSINFO; 30 31 static { 32 CLASSINFO = new Hashtable(2); 33 CLASSINFO.put(Animal.class, new ClassInfo(true, Object .class, 34 new FieldInfo[] { new FieldInfo("_name", String .class, true, 35 false, false) })); 36 CLASSINFO.put(Dog.class, 37 new ClassInfo(false, Animal.class, 38 new FieldInfo[] { 39 new FieldInfo("_age", Integer .class, true, 40 false, false), 41 new FieldInfo("_parents", Dog[].class, true, 42 false, false), 43 new FieldInfo("_prices", int[].class, true, 44 false, false), 45 })); 46 } 48 49 public ClassInfo infoFor(Class clazz) { 50 return (ClassInfo) CLASSINFO.get(clazz); 51 } 52 53 public Object arrayFor(Class clazz, int length) { 54 if (Dog.class.isAssignableFrom(clazz)) { 55 return new Dog[length]; 56 } 57 if (Animal.class.isAssignableFrom(clazz)) { 58 return new Animal[length]; 59 } 60 return super.arrayFor(clazz, length); 61 } 62 63 public Class componentType(Class clazz) { 64 if (Dog[].class.isAssignableFrom(clazz)) { 65 return Dog.class; 66 } 67 if (Animal[].class.isAssignableFrom(clazz)) { 68 return Animal.class; 69 } 70 return super.componentType(clazz); 71 } 72 } 73 | Popular Tags |