java - 如何避免使用break
问题描述
我认为break
这不是停止这种方法的最佳解决方案;
当我设置对象和实体管理器时,如何停止该方法;而不是使用break
;
/**
* Convenience method for setting the given entity manager to the given
* object via reflection.
*
* @param object the object whose entity manager should be set
* @param em the entity manager that should be set
*/
protected void setEntityManager(Object object, EntityManager em) {
Field[] fields = object.getClass().getDeclaredFields();
for (Field f : fields) {
if (f.getType().isAssignableFrom(EntityManager.class)) {
f.setAccessible(true);
try {
f.set(object, em);
break;
} catch (IllegalArgumentException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}
}
解决方案
我想过使用这样的流:
protected void setEntityManager(Object object, EntityManager em) {
Optional<Field> f = Arrays.stream(object.getClass().getDeclaredFields())
.filter(x -> x.getType().isAssignableFrom(EntityManager.class)).findFirst();
if (f.isPresent()) {
f.get().setAccessible(true);
try {
f.get().set(object, em);
} catch (IllegalArgumentException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}
推荐阅读
- c# - 遇到代码无法识别输入的密码是否正确的问题
- c++ - 钻石问题 C++:钻石的派生类调用默认构造函数
- php - php 每次刷新时停止运行 sql 查询
- python - 关于python matplotlib x轴日期格式设置
- c++ - 重新排序日志文件中的数据(Leetcode)
- tensorflow - 如何在 gpflow 中使用带有非变分 GPR 的小批量?
- c - 我可以以某种方式将可变数量的字符存储在字符串数组中吗?
- javascript - 如何在 javaScript 中为 web 自定义组件上的 addEventListener 编写单元测试用例
- debugging - 调试在主题的 VS Code 中不起作用
- java - 如何为以下方法编写单元测试 JWKS RSA 算法,使用 Java 中的 junit 或 mockito 验证签名和测试角色