PDA

View Full Version : سوال در مورد final



sobhan1990
پنج شنبه 11 تیر 1394, 21:19 عصر
سلام
چرا وقتی یکی از کامپوننت های اندروید(مثلا editText) را در داخل متد onCreate تعریف می کنیم باید حتما final باشد ولی اگر در بدنه کلاس تعریف کنیم نیازی به اینکار نیست؟

Nevercom
پنج شنبه 11 تیر 1394, 21:32 عصر
اگر شئ در متدی از کلاس اصلی تعریف بشه نیاز نیست که final باشه، یعنی در متد onCreate نیازی نیست که final باشه، درواقع درصورتی نیاز هست که یک شئ بصورت final تعریف بشه، که در کلاس درونی (Anonymous Inner Class) مورد استفاده قرار بگیره.

مثلاً شما می تونید یک متغیر رو در متد onCreate تعریف کنید و ازش استفاده کنید و نیازی نیست final باشه، اما اگر این متغیر مثلاً در متد onClick از کلاس OnClickListener مورد استفاده قرار بگیره، باید final تعریف بشه (یا اینکه بصورت فیلد برای کلاس اصلی تعریف بشه)
کلمه ی کلیدی final مشخص می کنه که مقدار متغیر پس از تعریف تغییری نمی کنه. دلیل این مورد هم بر میگرده به ساختار جاوا و نحوه ی دسترسی Anonymous Class به متغیر های محلی.