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);
}
相关推荐
excel21 分钟前
Nuxt + Twin CSS 中宽度超过屏幕时底部出现空白的原因与解决方案
前端·javascript
计算机魔术师2 小时前
美国司法部正式站队 OpenAI,AI 训练的版权账要这么算了
前端
IT_陈寒2 小时前
React Hooks闭包陷阱差点让我加班到凌晨
前端·人工智能·后端
风骏时光牛马2 小时前
疑难Bug根因定位与问题复盘分析
前端
创新技术阁3 小时前
FastapiAdmin 系统日志体系与核心配置参数详解
前端·后端·fastapi
掘金酱3 小时前
【社区公告】签到与矿石奖励解耦说明
前端
promiseThen3 小时前
LWC Workflow:用 7 个 Cursor Skill 搭一条 AI 协作开发流水线
前端·ai编程
一个游离的指针3 小时前
函数管道:消除深度嵌套调用
前端·javascript
浅诺3 小时前
Nginx sub_filter 的“幽灵陷阱”:为什么页面能打开,懒加载的 JS 却全是 404?
前端
PBitW3 小时前
为什么vite中TS报错,可以继续运行?Webpack不行?
前端·webpack·typescript·vite