自定义虚拟属性
可以为特定类注册一个虚拟属性,也可以为一些类注册虚拟属性
- public void registerVirtualAttributeClass(Class cls, VirtualClassAttribute virtual) 实现VirtualClassAttribute方法可以为特定类注册一个需要属性,如下代码:
gt.registerVirtualAttributeClass(User.class, new VirtualClassAttribute() {
@Override
public String eval(Object o, String attributeName, Context ctx){
User user = (User) o;
if(attributeName.equals("ageDescritpion")){
if (user.getAge() < 10){
return "young";
}else{
return "old";
}
}
}
});
User类的所有虚拟属性将执行eval方法,此方法根据年纪属性来输出对应的描述。
public void registerVirtualAttributeEval(VirtualAttributeEval e) 为一些类注册需要属性,VirtualAttributeEval.isSupport方法将判断是否应用虚拟属性到此类
如下是虚拟属性类的定义
public interface VirtualClassAttribute{
public Object eval(Object o, String attributeName, Context ctx);
}
public interface VirtualAttributeEval extends VirtualClassAttribute{
public boolean isSupport(Class c, String attributeName);
}