如何避免使用 break
How to avoid using 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);
}
}
}
}
我认为 break
的使用非常合理。
如果你仍然想停止循环而不使用 break
,你可以使用 return
,因为在 return 值为 void 的方法中允许 return;
。
我想像这样使用流:
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);
}
}
}
我认为 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);
}
}
}
}
我认为 break
的使用非常合理。
如果你仍然想停止循环而不使用 break
,你可以使用 return
,因为在 return 值为 void 的方法中允许 return;
。
我想像这样使用流:
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);
}
}
}