Field[] fields = ReflectUtil.getFields(eventData.getClass()); for (Field field : fields) { if (Objects.isNull(field.getAnnotation(TranslateFileds.class))) { continue; } TranslateFiled[] actions = field.getAnnotationsByType(TranslateFiled.class); for (TranslateFiled action : actions) { Field translateFiledDesc = ReflectUtil.getField(eventData.getClass(), field.getName() + "Desc"); if (!translateFiledDesc.isAccessible()) { translateFiledDesc.setAccessible(true); } if (action.key().equals(field.get(eventData))) { translateFiledDesc.set(eventData, action.value()); } } },用Stream流优化这段代码
时间: 2023-03-01 14:21:15 浏览: 63
这段代码的主要作用是通过反射获取 `eventData` 类的所有字段,对于带有 `TranslateFileds` 注解的字段,再获取其上的 `TranslateFiled` 注解数组,逐个判断 `action.key()` 是否等于字段的值,如果相等,则将 `translateFiledDesc` 字段的值设为 `action.value()`。
可以使用 Stream API 优化代码如下:
```
Field[] fields = ReflectUtil.getFields(eventData.getClass());
Arrays.stream(fields)
.filter(field -> Objects.nonNull(field.getAnnotation(TranslateFileds.class)))
.flatMap(field -> Arrays.stream(field.getAnnotationsByType(TranslateFiled.class)))
.forEach(action -> {
try {
Field translateFiledDesc = ReflectUtil.getField(eventData.getClass(), field.getName() + "Desc");
if (!translateFiledDesc.isAccessible()) {
translateFiledDesc.setAccessible(true);
}
if (action.key().equals(field.get(eventData))) {
translateFiledDesc.set(eventData, action.value());
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
});
```