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 final
a ambos, la propiedad y el constructor o esto es lo mismo que dejar final
desde el constructor?
protected AbstractTest(final T test) {
this.test = test;
}
Marcando un parámetro de función final
le 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.test
es medio final del test
pará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.