Android 获取类成员值的方法

在开发的过程中,可能需要方便的获取里面所有字段值,可以用这个方法快速获取所有成员的 name, value

java 复制代码
public static void printAllInfo(String tag, Object object) {
    StringBuilder sb = new StringBuilder();
    Field[] fields = object.getClass().getDeclaredFields();
    for (Field field : fields) {
        field.setAccessible(true);
        try {
            Object value = field.get(object);
            if (value instanceof ObservableField<?>) {
                sb.append(field.getName() + ":" + ((ObservableField<?>) value).get()).append("\n");
            } else if (value instanceof ObservableBoolean) {
                sb.append(field.getName() + ":" + ((ObservableBoolean) value).get()).append("\n");
            } else if (value instanceof ObservableInt) {
                sb.append(field.getName() + ":" + ((ObservableInt) value).get()).append("\n");
            } else if (value instanceof ObservableFloat) {
                sb.append(field.getName() + ":" + ((ObservableFloat) value).get()).append("\n");
            }  else if (value instanceof MutableLiveData) {
                sb.append(field.getName() + ":" + ((MutableLiveData) value).getValue()).append("\n");
            } else if (value instanceof List<?>) {
                if (((List<?>) value).isEmpty()) {
                    sb.append(field.getName() + ":[]").append("\n");
                } else {
                    sb.append(field.getName() + ":" + GsonUtils.toJson(value)).append("\n");
                }
            } else if (value instanceof BindingCommand) {
                sb.append(field.getName() + ":Event").append("\n");
            } else if (value instanceof int[]) {
                sb.append(field.getName() + ":" + Arrays.toString((int[]) value)).append("\n");
            } else {
                sb.append(field.getName() + ":" + value).append("\n");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    PrintMsg.d(tag + sb);
}
相关推荐
程序员黑豆2 小时前
Java 注释详解:单行、多行与文档注释的完整指南
java·前端·ai编程
剪刀石头布啊2 小时前
antd中可编辑表格中巧用useWatch实现联动高性能效果,以及定制延伸学习
前端
油丶酸萝卜别吃3 小时前
前端转全栈学习路线
前端·学习
浮生望3 小时前
前端路由进阶:History API原理与手写HistoryRouter
前端
陆枫Larry4 小时前
JavaScript 中的竞态是什么,为啥会有竟态?
前端
上海安当技术6 小时前
半天接入:USBKey RESTful API + C 动态库,Web 和 C/S 两套集成路径实战
前端·后端·restful·集成·usbkey
DevUI团队6 小时前
从“即兴创作”到“规格先行”,华为云码道(CodeArts)代码智能体持续深耕企业级规范驱动开发能力
前端·人工智能·后端
weixin_431600447 小时前
NestJS 入门(3):Guard 如何挡住未登录请求?
前端·后端·学习·nest.js
kyriewen7 小时前
我用Claude Code两天干完了团队两周的排期——周报发出去那一刻我就后悔了
前端·javascript·ai编程
IT_陈寒8 小时前
JavaScript类型转换把我坑惨了,这破玩意真该早点搞明白
前端·人工智能·后端