sirve settitle que programacion para java shadowing

settitle - ¿Para qué se utiliza el sombreado variable en una clase Java?



set title java (5)

El propósito básico de sombrear es desacoplar el código local de la clase circundante. Si no estaba disponible, considere el siguiente caso.

Se publica una clase Foo en una API. En su código, haga una subclase y en su subclase use una variable llamada barra. Luego, Foo lanza una actualización y agrega una variable protegida llamada Barra a su clase.

Ahora su clase no se ejecutará debido a un conflicto que no pudo anticipar.

Sin embargo, no hagas esto a propósito. Solo deja que esto suceda cuando realmente no te importa lo que está sucediendo fuera del alcance.

Estoy leyendo mi libro Deitel, Java Cómo programar y encontré el término sombreado . Si se permite el seguimiento, ¿qué situación o propósito hay para ello en una clase de Java?

Ejemplo:

public class Foo { int x = 5; public void useField() { System.out.println(this.x); } public void useLocal() { int x = 10; System.out.println(x); } }


Los dos usos comunes son constructores y métodos de conjuntos:

public Foo(int x) { this.x = x; } public void setX(int x) { this.x = x; }

Muy ocasionalmente es útil si desea una copia de la variable en un solo instante, pero la variable puede cambiar dentro de la llamada al método.

private void fire() { Listener[] listeners = this.listeners; int num = listeners.length; for (int ct=0; ct<num; ++ct) { listeners[ct].stateChanged(); } }

(Por supuesto, un ejemplo artificial hecho innecesario con el elegante bucle.)


Puede ser útil para los creadores donde no desea tener que crear un nombre de variable separado solo para el parámetro del método, por ejemplo:

public void setX(int x) { this.x = x; }

Aparte de eso los evitaría.


Sombrear no es realmente un solo término de Java. En cualquier caso en el que una variable declarada en un ámbito tenga el mismo nombre que una en un ámbito mayor, esa variable estará sombreada.

Algunos usos comunes para el remedo son cuando tiene clases internas y externas y desea mantener una variable con el mismo nombre.

Sin embargo, si puede evitarlo, debería hacerlo ya que puede causar confusión.


Un propósito importante es confundir a la gente. Es una mala práctica y debe evitarse.