在开发的过程中,可能需要方便的获取里面所有字段值,可以用这个方法快速获取所有成员的 name, value
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);
}