private void populateShopId(Object obj, Long shopId) {
if (obj == null || shopId == null) return;
// 如果对象继承自 ShopIdentifiable,设置 shopId
if (obj instanceof ShopIdentifiable) {
ShopIdentifiable shopObj = (ShopIdentifiable) obj;
if (shopObj.getShopId() == null) {
shopObj.setShopId(shopId.intValue());
}
}
// 如果是列表,递归处理每个元素
if (obj instanceof List) {
((List<?>) obj).forEach(item -> populateShopId(item, shopId));
return;
}
// 处理数组
if (obj.getClass().isArray()) {
Object[] array = (Object[]) obj;
for (Object item : array) {
populateShopId(item, shopId);
}
return;
}
// 对于其他对象,检查是否有继承自 ShopIdentifiable 的内部类或字段
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
try {
field.setAccessible(true);
Object fieldValue = field.get(obj);
if (fieldValue != null) {
// 递归处理字段值
populateShopId(fieldValue, shopId);
}
} catch (IllegalAccessException e) {
log.warn("无法访问字段: {}", field.getName(), e);
}
}
}
使用反射查找内部类或对象是否继承父类统一处理数据
最新推荐文章于 2025-12-08 09:18:56 发布
1769

被折叠的 条评论
为什么被折叠?



