Android Development – Para hacer referencia a un campo, ¿es necesario usar "this"?

Estoy estudiando un artículo, y descubrí que "esto" es usado. A continuación se muestra un resumen rápido de los códigos:

public class CustomAd implements CustomEventBanner, AdListener { private CustomEventBannerListener bannerListener; private AdView adView; @Override public void requestBannerAd(final CustomEventBannerListener listener, final Activity activity, String label, String serverParameter, AdSize adSize, MediationAdRequest mediationAdRequest, Object extra) { this.bannerListener = listener; this.adView = new AdView(activity, bestAdSize, serverParameter); this.adView.setAdListener(this); AdRequest adRequest = new AdRequest(); this.adView.loadAd(adRequest); } } 

Aquí, podemos ver que el campo "adView" se crea bajo la clase "CustomAd". Para referenciarlo, hemos utilizado "this.adView". Sin embargo, he encontrado que incluso no uso "esto" (por lo que será "adView" en lugar de "this.adView"), todo va bien sin ningún error.

Entonces, ¿cuál es el propósito de usar "esto" aquí?

Gracias.

En el caso anterior no se requiere this palabra clave.

Sin embargo, si, por ejemplo, el parámetro del método también se llamaba bannerListener , usar la palabra clave this en el lado izquierdo especificaría que se está refiriendo al campo miembro y no al parámetro.

En el ejemplo anterior probablemente se utilice para facilitar la legibilidad. No es necesario hacer referencia a un campo de miembros de esa manera, pero lo hace explícito y puede evitar referirse accidentalmente a lo incorrecto.

De los documentos :

Dentro de un método de instancia o un constructor, se trata de una referencia al objeto actual : el objeto cuyo método o constructor está siendo llamado. Puede hacer referencia a cualquier miembro del objeto actual desde un método de instancia o un constructor utilizando this .

En el ejemplo proporcionado, this sólo es necesario en la variable adView . La palabra clave this refiere a este objeto actual. Si miras el encabezado de tu método, tienes una variable pasada en adView y tienes un campo llamado adView . Si acabo de decir adView.loadAd(/** something */) , ¿de qué adView estoy hablando? ¿Me refiero al parámetro o al campo? En lo que a java se refiere, estoy pidiendo el parámetro, no el campo, pero ¿cómo sabe el programador que sin ese conocimiento previo? Si cambiaste la variable de parámetro a otra cosa, entonces podrías evitar usar this , pero yo te aconsejaría en contra. Nombrar parámetros para que coincida con sus campos lo hace muy claro lo que tiene la intención de hacer con él, y el uso de this palabra clave en los campos hace muy claro a cuál se está refiriendo.

Edit: Perdió una parte de la pregunta. Tienes razón en que la eliminación de this funcionará bien para ese método, pero su campo adView nunca se asigna a nada, lo que lo hace nulo. ¿Qué sucede si más adelante en su código, en un método diferente, necesita usar adView ? Es nulo y obtendrá una NullPointerException .

  • Detectar orientación con javascript en dispositivos Android
  • Cómo inyectar código javascript con ADB en una pestaña abierta del navegador?
  • ¿Cómo puedo obtener Android para responder a los drags táctiles?
  • ¿Cómo puedo encontrar fugas de memoria en una aplicación javascript de una sola página?
  • ¿Cómo resaltar el texto permanentemente en la vista web de Android?
  • Android (Samsung S4) Pausas de vídeo HTML5
  • Redirect de Android no funciona
  • Eliminación de la barra de direcciones del navegador (para ver en Android)
  • ¿Qué es clobbering window.page en mi Galaxy S3?
  • Navegador nativo de Android duplicando el lienzo HTML5 (fino en cromo)
  • Android - Cómo utilizar el complemento de PhoneGap Share
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.