Javascript Android开发-参考一个领域,是否有必要使用;这是什么;?
我在研究一篇文章,发现使用了“this”。以下是代码的快速摘要:Javascript Android开发-参考一个领域,是否有必要使用;这是什么;?,javascript,android,Javascript,Android,我在研究一篇文章,发现使用了“this”。以下是代码的快速摘要: public class CustomAd implements CustomEventBanner, AdListener { private CustomEventBannerListener bannerListener; private AdView adView; @Override public void requestBannerAd(final CustomEventBannerListener
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”的目的是什么
谢谢。在您提供的示例中,
此
仅对adView
变量是必需的。this
关键字引用当前对象。如果查看方法头,则传入一个名为adView
的变量,还有一个名为adView
的字段。如果我只是说adView.loadAd(/**something*/)
,我指的是哪个adView
?我是指参数还是字段?就java而言,我要求的是参数,而不是字段,但是程序员在没有这些先验知识的情况下如何知道呢?如果将参数变量更改为其他变量,则可以避免使用this
,但我建议不要这样做。命名与字段匹配的参数可以非常清楚地说明您打算对其执行什么操作,并且在字段上使用this
关键字可以非常清楚地说明您所指的是哪一个
编辑:遗漏了问题的一部分。您是对的,它删除
此
对于该方法很好,但是您的adView
字段从未分配给任何对象,这使其为空。如果稍后在代码中,使用不同的方法,您需要使用adView
,会发生什么情况?它为空,在以上的情况下,您将获得NullPointerException
,该关键字不是必需的
但是,例如,如果方法参数也被称为bannerListener
,则使用左侧的this
关键字将指定您引用的是成员字段而不是参数
在上面的示例中,它可能用于帮助可读性。没有必要以这种方式引用成员字段,但它确实使成员字段显式,并且可以防止意外引用错误的内容
从:
在实例方法或构造函数中,此
是对当前对象的引用,即调用其方法或构造函数的对象。您可以使用this
从实例方法或构造函数中引用当前对象的任何成员
请阅读。查看此链接,它将帮助您。“如果你看一下你的方法头,你有一个名为adView的变量传入,还有一个名为adView的字段。”哇,这让我很清楚。我会研究一段时间,如果一切正常,我会把它标记为答案。谢谢