Android开发 - 要引用一个字段,是否有必要使用"这个"?

时间:2014-04-19 17:50:04

标签: javascript android

我正在研究一篇文章,并发现“这个”被使用了。以下是代码的快速摘要:

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);
  }
}

在这里,我们可以看到“adView”字段是在“CustomAd”类下创建的。为了引用它,我们使用了“this.adView”。但是,我发现即使我不使用“this”(因此它将是“adView”而不是“this.adView”),一切顺利,没有任何错误。

那么在这里使用“this”的目的是什么?

感谢。

2 个答案:

答案 0 :(得分:3)

在上述情况下,不需要this关键字。

但是,如果方法参数也称为bannerListener,则在左侧使用this关键字将指定您指的是成员字段而不是参数。< / p>

在上面的示例中,它可能用于帮助提高可读性。没有必要以这种方式引用成员字段,但它确实使其明确,并且可以防止意外引用错误的事物。

来自docs

  

在实例方法或构造函数中,this是对当前对象的引用 - 正在调用其方法或构造函数的对象。您可以使用this从实例方法或构造函数中引用当前对象的任何成员。

答案 1 :(得分:2)

在您提供的示例中,只有this变量才需要adViewthis关键字引用此当前对象。如果查看方法标题,则会传入一个名为adView的变量,并且您有一个名为adView的字段。如果我只说adView.loadAd(/** something */),我在说adView?我的意思是参数还是字段?就java而言,我要求参数而不是字段,但如果没有先验知识,程序员如何知道呢?如果您将参数变量更改为其他内容,则可以避免使用this,但我会建议不要使用它。命名参数以匹配您的字段可以非常清楚您打算如何处理它,并且在字段上使用this关键字可以清楚地表明您指的是哪一个。

编辑:错过了部分问题。你是对的,删除this对于该方法可以正常工作,但是你的adView字段永远不会分配给任何东西,这使得它为空。如果在您的代码中稍后使用其他方法,您需要使用adView会发生什么?它为空,您将获得NullPointerException