Es correcta para asignar a una variable usando && con la misma variable en Java?

Csanchez:

Estoy haciendo algunos cambios en el código antiguo que requiere mantenimiento, y me encontré con algo como esto

public boolean aMethod(){
    boolean isValid = true;

    **isValid = isValid &&** executeGetDocs(id.toString(),program().toString(), document.get(name));

  return isValid;
}

El método executeGetDocs pueden devolver verdadero o falso.

Pero no estoy seguro de si: ** = isValid isValid && ** executeGetDocs es correcta o es redundante.

Así que aquí estoy, ¿Puede alguien por favor, dame un poco de explicación de esto?

¡Muchas gracias!

EDITADO

método entero:

private boolean validateDocs(List<Map<String, Object>> documentsList) {
        boolean isValid = true;
        StringBuilder gradoAntComp = new StringBuilder();
        for (Map<String, Object> document : documentsList) {
            String id = document.get("ID_DOC").toString();
            if (id.equalsIgnoreCase("25")) {
                isValid = getData(id.toString(),program().toString(), document.get(name))
            } else if (id.equalsIgnoreCase("26") ) {
                isValid = isValid && getDocs(id.toString(),program().toString(), document.get(name));
            } 
        }
        return isValid;
    }
Eran :

Era redundante en su pregunta original. El método original informados podría reducirse a:

public boolean aMethod() {
    return executeGetDocs(id.toString(),program().toString(), document.get(name));
}

ya que (true && x) == xpara cualquier boolean x.

Sin embargo, ya ha cambiado la pregunta, la respuesta cambia también. Ahora, la booleanvariable puede cambiar varias veces dentro de un bucle. Por lo tanto, tiene sentido y el valor anterior de la variable (que puede ser trueo false) con otro boolean, que puede provocar su valor para cambiar.

private boolean validateDocs(List<Map<String, Object>> documentsList) {
    boolean isValid = true;
    StringBuilder gradoAntComp = new StringBuilder();
    for (Map<String, Object> document : documentsList) {
        String id = document.get("ID_DOC").toString();
        if (id.equalsIgnoreCase("25")) {
            // this can set isValid to either false or true
            isValid = getData(id.toString(),program().toString(), document.get(name))
        } else if (id.equalsIgnoreCase("26") ) {
            // therefore performing logical AND between the previous value of
            // isValid and some additional boolean is meaningful - isValid will
            // be assigned true only if it was true before this statement AND
            // getDocs(id.toString(),program().toString(), document.get(name)) is true
            isValid = isValid && getDocs(id.toString(),program().toString(), document.get(name));
        } 
    }
    return isValid;
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=312668&siteId=1
Recomendado
Clasificación