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);
}
相关推荐
今年下半年1 分钟前
【前端】Vue2 项目 ECharts 统计图表组件封装与使用实践(附组件源码)
前端·javascript·echarts
西索斯coding9 分钟前
在 中接入 教程:p配置、m填写、扩展思考参数一篇就够(2)
java·前端·javascript·ai
代码猎人12 分钟前
前端怎么优化项目基础架构
前端
__sjfzllv___20 分钟前
在职前端Leader学习/转行 AI Agent -DAY78
前端
代码猎人20 分钟前
前端怎么封装工具类
前端
deli00724 分钟前
PDF 合并别再用在线工具:12 份文件浏览器里合完,实测不上传
前端
shuoshuohaohao24 分钟前
SpringBoot3-web开发-静态资源-内容协商
前端
kiros_wang27 分钟前
RDB关系数据库实战:增删改查、事务、分页、版本迁移
前端
用户17335980753728 分钟前
纯前端 PDF 双面打印避坑指南:翻页顺序错了整个白印?
前端·javascript·vue.js
庖丁解牛29 分钟前
第四课:循环,让电脑重复做事(4)
前端