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 小时前
2026数据新规下,远程控制软件安全大起底:ToDesk、向日葵、UU远程谁更能守护企业资产?
前端
IT_陈寒2 小时前
Redis 缓存击穿 vs 雪崩:5个实战方案让你的系统稳如磐石
前端·人工智能·后端
daols882 小时前
vue表格vxe-table实现表头合并,分组表头自定义合并
前端·vue.js·vxe-table
执行部之龙2 小时前
js手写——防抖
开发语言·前端·javascript
DEMO派2 小时前
JavaScript数据存储三剑客:Object、Map与WeakMap完全指南
开发语言·前端·javascript
一拳不是超人2 小时前
半年AI编程实战总结:从工具到心法,让AI成为你的超能力
前端·人工智能·ai编程
阿杜杜不是阿木木2 小时前
从0到1构建像Claude Code那样的Agent(二):工具
前端·chrome·agent·ai编程·cluade code
cramer_50h2 小时前
Python的web开发框架Django再次更新
前端·python·django
weixin_6682 小时前
Clawith 大模型设计逻辑与前端接口架构分析 -AI分析
前端·人工智能·架构