如何避免使用休息

时间:2018-07-30 06:55:06

标签: java reflection conventions

我认为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);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:4)

我想使用这样的流:

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);
        }
    }
}

答案 1 :(得分:1)

我认为break的使用非常合理。 如果您仍想停止循环而不使用break,则可以使用return,因为在返回值为void的方法中允许return;