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 .

  • (Javascript) window.onblur y window.onfocus no funcionan en el dispositivo móvil android
  • Redirigir a la aplicación de Android desde un sitio web?
  • Cómo podemos capturar un dispositivo móvil "Siguiente" presionar tecla en Javascript
  • Programáticamente agregar evento en iPhone / Android Calendario con PhoneGap / jQuery Mobile?
  • ANDROID / WEBVIEW- Uncaught TypeError: Object no tiene ningún método 'changeActivity' en el archivo:
  • Llame a la función javascript en Android WebView
  • Configuración de las cookies de Webview de Android desde un archivo HTML en el directorio de activos
  • Entrada de foco suelto al instante en Android después de centrarse con javascript
  • Websocket en Android 4.4 con Phonegap
  • NavigationControl, mapTypeControl y scaleControl van detrás del mapa
  • Detectar clic en el botón HTML a través de javascript en Android WebView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.