参见英文答案 > 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是什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)