zoukankan      html  css  js  c++  java
  • 读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~

  • 相关阅读:
    如何在Ubuntu Server 18.04上安装Microsoft的Procmon
    如何在Ubuntu 20.04上安装Wine 5.0
    如何在Kali Linux 2020中启用SSH服务
    如何在Ubuntu 20.04 LTS Focal Fossa上安装Apache Groovy
    如何使用命令在Ubuntu 20.04 Linux上安装Vmware Tools
    在Ubuntu 20.04 LTS Focal Fossa上安装Zabbix Agent
    hdu 2089 不要62
    hdu 2093 成绩排名
    hdu 2104 hide handkerchief
    leetcode147对链表进行插入排序
  • 原文地址:https://www.cnblogs.com/fishbone-lsy/p/4916010.html
Copyright © 2011-2022 走看看