两者之间有区别吗?
startActivity(intent);
finish();
startActivity(intent);
ThisActivityName.this.finish();
注意:
ThisActivityName
是代码所在的活动的名称。在开始新活动时,我被告知执行ThisActivityName.this.finish();
而不是仅仅finish()
。所以我很好奇是否有任何区别。在我刚开始下一个活动的情况下。 最佳答案
简单的答案
通常没有区别。
更长的咆哮
他们正在调用相同的方法,但是,像ThisActivityName.this.finish();
这样调用它可以确保在不太可能发生的事件中,无论您在哪里执行代码,碰巧也都有一个finish
方法,您将调用正确的方法。即使在您提到首先要在何处调用startActivity
的情况下,这也不会消除调用错误方法的可能性,尤其是使用诸如finish
之类的通用名称。
假设您位于活动文件中的自定义类中,该类具有声明的finish方法,并且该方法也不带任何参数。调用finish()
将调用该方法,而不是活动1。
样例代码
public class WadusActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public class SomeOtherClass{
public SomeOtherClass(){
WadusActivity.this.finish(); //This calls the activity finish
finish(); //This calls the method below
}
public void finish(){
//method also named finish
}
}
}
不太可能吗?是。不可能?一点也不。
我们的基本需求是了解每种情况下
this
所指的含义。当按原样使用this
时,它将引用第一个包含该关键字的包装类实例,如果我们要引用层次结构中更高的内容,则需要在类名之前添加前缀,就像您对关于java - ThisActivityName.this.finish()和finish()之间有什么区别吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30233958/