class_name.this与此有何不同

我看到一些代码使用class_name.this作为其上下文的参数,有时直接在另一个演示代码中使用this 。 我可以假设thisclass_name.this的缩写吗?

如果类引用可以类型转换为Context,我们使用this 。 当this对象不可能时,我们使用ClassName.this (但是只有当类是Context类的子/超子[ 子类 ]时才会这样。比如Activity / Services)


阅读Android上的“上下文”是什么?


让我通过示例代码解释(例如我使用ActivityAsyncTask

 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.startActivity(intent); // or MainActivity.this.startActivity(intent); // Both are same here. } private class TestTask extends AsyncTask { @Override protected Void doInBackground(Void... params) { // TODO Auto-generated method stub return null; } @Override protected void onPostExecute(Void result) { this.startActivity(intent); // You can not do. Because "this" is the current object of AsyncTask not of Activity. // So you can only use MainActivity.this.startActivity(intent); } } } 
 1.In Outer Class you directly use "this" reference 2.In Inner Class Or Abstract Class implementation Or Interface implementation use "classname.this" reference 

这是一种特殊的语法,允许从内部类访问外部类实例。 考虑一下

 class X { class Y { void y() { Object y = this; Object x = X.this; } } } 

ClassName.this允许您甚至在嵌套类中引用外部类。

例如, MyClickListener嵌套在MainAcvitiy

 private class MyClickListener implements OnClickListener { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "I have been clicked", Toast.LENGTH_SHORT).show(); } } 

你需要对MainActivity.this的引用,因为它的当前值是MyClickListener ,你不想在这里传递对Activity的引用

用于引用类的当前或实时实例,但是在必须使用嵌套类并且嵌套类想要访问外部类的成员然后使用class_name.this来完成它的情况下,因为它将清楚哪个类u指的是。

参考这个问题: –
Class.this和Java之间有什么区别