ReflectObjectLike.java
package eu.javaexperience.datareprez.convertFrom;
import java.lang.reflect.Field;
import java.util.Map;
import eu.javaexperience.collection.map.SmallMap;
import eu.javaexperience.reflect.Mirror;
import eu.javaexperience.reflect.Mirror.ClassData;
import eu.javaexperience.reflect.Mirror.FieldSelector;
import eu.javaexperience.text.StringTools;
public class ReflectObjectLike implements ObjectLike
{
protected Map<String, Field> fields = new SmallMap();
public ReflectObjectLike(FieldSelector select)
{
ClassData dat = Mirror.getClassData(this.getClass());
Field[] fs = dat.selectFields(select);
for(Field f:fs)
{
fields.put(StringTools.getSubstringAfterLastString(f.getName(), "."), f);
}
}
@Override
public Object get(String key)
{
Field f = fields.get(key);
if(null != f)
{
try
{
return f.get(this);
}
catch(Exception e)
{
e.printStackTrace();
}
}
return null;
}
@Override
public DataReprezType getDataReprezType()
{
return DataReprezType.OBJECT;
}
@Override
public boolean has(String key)
{
return fields.containsKey(key);
}
@Override
public String[] keys()
{
return fields.keySet().toArray(Mirror.emptyStringArray);
}
@Override
public int size()
{
return fields.size();
}
}