final en el constructor y la propiedad

nimo23:

Tengo una propiedad final y un constructor:

public abstract class AbstractTest<T> {

    protected final T test;

    // no need for final, as property is already declared as final?
    protected AbstractTest(final T test) {
        this.test = test;
    }

}

¿Debo poner finala ambos, la propiedad y el constructor o esto es lo mismo que dejar finaldesde el constructor?

John Kugelman:
protected AbstractTest(final T test) {
    this.test = test;
}

Marcando un parámetro de función finalle impide modificar la variable dentro de la función. No afecta a las personas que llaman en absoluto, ni afecta a cualquier otra parte de la clase. Código fuera no le importa un modo u otro; es sólo relevante dentro de la implementación de la función.

protected AbstractTest(final T test) {
    this.test = test;
    test = null;       // Illegal if the parameter is final, legal otherwise.
}

Depende de usted si desea marcar parámetros final o no.

Si usted se pregunta si this.testes medio final del testparámetro también debe ser definitiva: ninguna . Uno tiene nada que ver con la otra. Se podía marcar ambas variables final, ni final, o uno final y no al contrario.

Si todavía no está seguro de qué hacer, mi consejo es: Foro de parámetros no nota final. Es tipificación adicional con casi cero beneficio.

Supongo que te gusta

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