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 .

  • ¿Hay alguna manera de invocar la navegación desde un navegador móvil?
  • Ejecutar código javascript en Webview
  • Navegador Android: Javascript window.innerWidth devuelve un valor incorrecto
  • Youtube iframe API - Android en pantalla completa
  • JavaScript no funciona en Android Webview?
  • Cómo deshabilitar el botón de nuevo presionado en la clase de fragmento de Android
  • JavascriptInterface en el WebView de Android: múltiples llamadas a JS causan interbloqueo
  • La alerta de JavaScript no funciona en Android WebView
  • Cómo ver la salida del registro de consola en la galaxia S2 de Samsung
  • ¿Cómo acceder a `this` dentro de un renderRow de un ListView?
  • ¿Se ejecuta JavaScript cuando la aplicación está en segundo plano?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.