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.

2 Solutions collect form web for “Android Development – Para hacer referencia a un campo, ¿es necesario usar "this"?”

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 .

  • Vista web de Android: ¿resaltar una palabra específica en una página usando javascript?
  • Inyección de JavaScript enclick () evento dentro de WebView
  • TypeError "No se puede establecer la conexión de propiedad de # <Navigator>" en la consola al actualizar el proyecto a la versión más reciente de Cordova 4.0.0
  • ¿Puedo usar javax.script en el desarrollo de Android y si es así, cómo?
  • Uncaught ReferenceError, Llamando función javascript a través de la aplicación android ..?
  • Navigator.geolocation.getCurrentPosition no funciona en android google chrome
  • ¿Cuáles son las clases comunes de la plataforma en Kotlin?
  • Instalando el plugin facebook de phonegap
  • Uncaught TypeError: Object # <Object> no tiene ningún método 'exec' en el archivo: ///android_asset/www/index.html
  • El enfoque de la ventana y los eventos de desenfoque no funcionan correctamente en el navegador de Android
  • Detectar evento de desplazamiento en el navegador de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.