Android 关于model(bean)类的遍历

Android 关于model(bean)类的遍历

之前有写过 json和map的遍历 估计大家都知道 现在播出的是model的遍历

首先定义一个model类
public class Model {

    private String id;
    private int age;

    public Model(String id, int age) {
        this.id = id;
        this.age = age;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

据我所知 String 占用的空间比其他基本类型要大 那么我为什么要用String呢 一般情况下long类型就足够了 但是有时候项目快做完了 老大要在所有的id前面加上不固定的字母 = - = 我为什么要用String 懂了吧
接下来就上遍历的代码 这里只提示重要的
private void test() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        Model model = new Model("abc", 18);
        //获取指定类所有的变量的对象数组
        Field[] fields = model.getClass().getDeclaredFields();
        int length = fields.length;
        for (int i = 0; i < length; i++) {
            Field field = fields[i];
            String key = field.getName();//key表示这个变量的字符串
            String type = field.getGenericType().getTypeName();//获取到了key的类型
            Logger.e("type = " + type);
            String getMethodString = "get" + key.substring(0, 1).toUpperCase() + key.substring(1, key.length());//必须注意 substring 是左开右闭的
            if ("int".equals(type)) {
                int value = (int) model.getClass().getMethod(getMethodString).invoke(model);
                Logger.e("key = " + key + "\tvalue = " + value);
            } else if ("java.lang.String".equals(type)) {
                String value = (String) model.getClass().getMethod(getMethodString).invoke(model);
                Logger.e("key = " + key + "\tvalue = " + value);
            }
        }
    }
这里是自动抛出了异常 小伙伴们想要优雅点可得想想办法了
这里Field和type需要好好注意下 value的值使用反射获取的 最重要的一点是substring区间是左开右闭的 我是很容易忘记这个左开右闭的

代码注释的也很详细 根据需求慢慢封装吧 留下运行后的截图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值