读ActiveAndroid番外——Field

  在学习ActiveAndroid的过程中接触到的第一个比较生疏的概念就是Field。这个类表示一个类的成员。光这样说比较绕,我们可以看个小例子。首先定义一个类LType:

public class LType{
    public String uid;
    
    public String name="lsy";
    public void print(String content){
        if(content != null){
            System.out.println(content);    
        }else{
            System.out.println("it is LType");
        }        
    }
}

 

   我们可以首先通过getClass()方法获得这个类,然后获取它的成员:

        LType testType = new LType();
        Class<? extends LType> type = testType.getClass();
        try {
            Field field = type.getField("uid");
        } catch (NoSuchFieldException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

  通过上面的方法,我们即可尝试获得LType这个类中名为uid的成员。

  值得一提的是,关于获得成员有两个方法,getField(String fieldName)方法只能获得public成员,而getDeclaredField(String fieldName)则可以获得任一成员变量,只要fieldName正确。

  如果不知道fieldName也不要紧,我们可以使用getFields()/getDeclaredFields()方法,获得Field[],其中包含了这个类的所有成员。

  获得了field之后,我们就可以通过getType获得它的类型;通过getName获得它的成员名;通过get(Object obj)方法获取成员的值(obj为LType的实例)甚至可以通过getAnnotation(Class class)方法获取它的成员注解信息。但是注解信息有其专门的格式,这个留在明天看。

  

  这个Field可以配合反射使用,根据成员的名称去调用相应的方法。在做的项目中,json解析就是用的这个原理。ActiveAndroid中也是通过这个,读取成员名,然后根据注解建成表中的字段 ,进行读写。总之,这个类看起来简单,却可以结合其他方法达到很多灵活的效果。

  加班比较多,只能写一点点。。。

Done~

转载于:https://www.cnblogs.com/fishbone-lsy/p/4916010.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值