کلمه کلیدی this به Instance (عبارت Instance رو دسترسی ترجمه می کنن، و معنیش این هست که شئی که از کلاس ساخته میشه، یک نمونه از کلاس هست) کلاس اشاره می کنه
این سینتکس وقتی کاربرد داره که شما در کلاس داخلی بخواید به Instance کلاس خارجی دسترسی پیدا کنید.
این کد رو در نظر بگیرید:
public class OuterClass extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(OuterClass.this, TargetClass.class));
}
});
}
}
در متد onClick کلمهی کلیدی this به درونی ترین کلاس اشاره می کنه که View.OnClickListener هست و بهش Anonymous Inner Class میگن، کلاس Intent در این Constructorش نیاز داره که پارامتر اول یک Instance از کلاسی براش ارسال بشه که نهایتاً از Context ارث بری کرده باشه (کلاس Activity در سلسله مراتب وراثتش از Context ارث بری می کنه). در این مثال کلاس OuterClass این خصوصیت رو داره و سینتکس جاوا برای اشاره به Instance کلاس بیرونی به این شکل هست: OuterClass.this اما کلاس OnClickListener این خصوصیت رو نداره و به همین دلیل نمیشه تنها از this استفاده کرد.
اگر همون کدی که نوشتید رو در هریک از متدهای کلاس OuerClass (یا در مثال شما FirstActivity) بنویسید، تنها کلمهی کلیدی this کفایت می کنه، اما اگر در کلاس درونی بخواید این کد رو اجرا کنید (مثل مثالی که من نوشتم)، باید از این سینتکس تبعیت کنید