我正在研究一篇文章,并发现“这个”被使用了。以下是代码的快速摘要:
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”的目的是什么?
感谢。
答案 0 :(得分:3)
在上述情况下,不需要this
关键字。
但是,如果方法参数也称为bannerListener
,则在左侧使用this
关键字将指定您指的是成员字段而不是参数。< / p>
在上面的示例中,它可能用于帮助提高可读性。没有必要以这种方式引用成员字段,但它确实使其明确,并且可以防止意外引用错误的事物。
来自docs:
在实例方法或构造函数中,
this
是对当前对象的引用 - 正在调用其方法或构造函数的对象。您可以使用this
从实例方法或构造函数中引用当前对象的任何成员。
答案 1 :(得分:2)
在您提供的示例中,只有this
变量才需要adView
。 this
关键字引用此当前对象。如果查看方法标题,则会传入一个名为adView
的变量,并且您有一个名为adView
的字段。如果我只说adView.loadAd(/** something */)
,我在说adView
?我的意思是参数还是字段?就java而言,我要求参数而不是字段,但如果没有先验知识,程序员如何知道呢?如果您将参数变量更改为其他内容,则可以避免使用this
,但我会建议不要使用它。命名参数以匹配您的字段可以非常清楚您打算如何处理它,并且在字段上使用this
关键字可以清楚地表明您指的是哪一个。
编辑:错过了部分问题。你是对的,删除this
对于该方法可以正常工作,但是你的adView
字段永远不会分配给任何东西,这使得它为空。如果在您的代码中稍后使用其他方法,您需要使用adView
会发生什么?它为空,您将获得NullPointerException
。