3.5. 自定义虚拟属性

可以为特定类注册一个虚拟属性,也可以为一些类注册虚拟属性

  • public void registerVirtualAttributeClass(Class cls, VirtualClassAttribute virtual) 实现VirtualClassAttribute方法可以为特定类注册一个需要属性,如下代码:
  1. gt.registerVirtualAttributeClass(User.class, new VirtualClassAttribute() {
  2. @Override
  3. public String eval(Object o, String attributeName, Context ctx){
  4. User user = (User) o;
  5. if(attributeName.equals("ageDescritpion")){
  6. if (user.getAge() < 10){
  7. return "young";
  8. }else{
  9. return "old";
  10. }
  11. }
  12. }
  13. });

User类的所有虚拟属性将执行eval方法,此方法根据年纪属性来输出对应的描述。

  • public void registerVirtualAttributeEval(VirtualAttributeEval e) 为一些类注册需要属性,VirtualAttributeEval.isSupport方法将判断是否应用虚拟属性到此类

    如下是虚拟属性类的定义

  1. public interface VirtualClassAttribute{
  2. public Object eval(Object o, String attributeName, Context ctx);
  3. }
  4. public interface VirtualAttributeEval extends VirtualClassAttribute{
  5. public boolean isSupport(Class c, String attributeName);
  6. }