java– 此代码示例中的关键字this reference是什么?

java– 此代码示例中的关键字this reference是什么?,第1张

概述参见英文答案>Java:Class.this                                    5个publicclassNewPlanetextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);se

参见英文答案 > Java: Class.this                                    5个

public class NewPlanet extends Activity { @OverrIDe protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_add);    ImageVIEw marsImage = (ImageVIEw) findVIEwByID(R.ID.imageMars);    marsImage.setonClickListener(new VIEw.OnClickListener() {        @OverrIDe        public voID onClick(VIEw v) {            WorldGen mars = new WorldGen("Mars", 642, 3.7);            mars.setPlanetColonIEs(1);            Toast.makeText(NewPlanet.this, "Mars Created", Toast.LENGTH_SHORT).show();        }    }); }}

NewPlanet.this引用了什么上下文?为什么类Toast中的makeText需要这个上下文?我理解在引用类时使用关键字this,并使用点表示法来访问其字段和构造函数,就像在this.fIEld中一样,但是当关键字何时出现在类引用之后呢?

解决方法:

实例NewPlanet.this表示NewPlanet的对象,它是一个外部类.如果您只使用了它,它将代表匿名类OnClickListener的实例.

编译后你会得到这样的东西:

marsImage.setonClickListener $1(new OnClickListener $1(this));

 static class OnClickListener implements OnClickListener {        private final NewPlanet ref;        OnClickListener(NewPlanet ref) {           this.ref= ref;        }        @OverrIDe        public voID onClick(VIEw v) {            WorldGen mars = new WorldGen("Mars", 642, 3.7);            mars.setPlanetColonIEs(1);            Toast.makeText(ref, "Mars Created", Toast.LENGTH_SHORT).show();        }    }
总结

以上是内存溢出为你收集整理的java – 此代码示例中的关键字this reference是什么?全部内容,希望文章能够帮你解决java – 此代码示例中的关键字this reference是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1107406.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存