两者之间有区别吗?

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/

10-10 20:03