یک کلاس جاوا ایجاد کنید یا تایپ کنید

اندروید استودیو با استفاده از کادر محاوره‌ای « ایجاد کلاس جدید» و قالب‌های فایل، به شما کمک می‌کند تا به سرعت کلاس‌ها و انواع جدید زیر را ایجاد کنید:

  • کلاس‌های جاوا
  • کلاس‌های شمارشی و تک‌لایه
  • انواع رابط و حاشیه‌نویسی

بعد از اینکه فیلدهای کادر محاوره‌ای Create New Class را پر کردید و روی OK کلیک کردید، اندروید استودیو یک فایل .java حاوی کد اسکلت‌بندی، شامل دستور package، هرگونه import لازم، یک هدر و یک اعلان کلاس یا نوع ایجاد می‌کند. در مرحله بعد، می‌توانید کد خود را به این فایل اضافه کنید.

قالب‌های فایل مشخص می‌کنند که اندروید استودیو چگونه کد اصلی را تولید می‌کند. می‌توانید از قالب‌های فایل ارائه شده توسط اندروید استودیو به همین شکل استفاده کنید یا آنها را متناسب با فرآیند توسعه خود سفارشی کنید.

مشاهده و سفارشی‌سازی قالب‌های فایل

اندروید استودیو قالب‌های فایلی را ارائه می‌دهد که نحوه ایجاد کلاس‌ها و انواع جدید جاوا را با استفاده از کادر محاوره‌ای Create New Class تعیین می‌کنند. می‌توانید این قالب‌ها را سفارشی کنید.

پنجره‌ی گفتگوی ایجاد کلاس جدید.

شکل ۱. پنجره‌ی محاوره‌ای ایجاد کلاس جدید .

قالب‌های فایل اندروید استودیو شامل کد زبان قالب سرعت ( VTL ) و متغیرهایی هستند که این گزینه‌های اضافی را مدیریت می‌کنند. کادر محاوره‌ای ایجاد کلاس جدید از قالب‌های فایل AnnotationType ، Class ، Enum ، Interface و Singleton استفاده می‌کند.

برای مشاهده قالب‌ها، یافتن موارد سفارشی‌سازی‌شده و تغییر قالب‌ها، این مراحل را دنبال کنید:

  1. یکی از موارد زیر را انجام دهید:

    • برای ویندوز یا لینوکس، مسیر File > Settings > Editor > File and Code Templates > Files را انتخاب کنید.
    • برای macOS، اندروید استودیو > تنظیمات > ویرایشگر > قالب‌های فایل و کد > فایل‌ها را انتخاب کنید.

    در لیست قالب‌ها ، نام قالب‌های داخلی با فونت پررنگ (بولد) نمایش داده می‌شوند. نام قالب‌های سفارشی با رنگی برجسته، مانند آبی، نمایش داده می‌شوند.

  2. قالب‌های فایل را در صورت نیاز سفارشی کنید.

    اگر می‌خواهید از فیلدهای محاوره‌ای «ایجاد کلاس جدید» استفاده کنید، مطمئن شوید که تغییرات شما با کد الگوی فایل اندروید استودیو مطابقت دارد.

برای اطلاعات بیشتر در مورد قالب‌های فایل، از جمله VTL، به قالب‌های فایل و کد و پنجره‌ی قالب‌های فایل و کد مراجعه کنید.

ایجاد یک کلاس یا نوع جاوا

اندروید استودیو به شما کمک می‌کند تا کلاس‌های جدید جاوا، کلاس‌های شمارشی و تک‌قلو و انواع رابط و حاشیه‌نویسی را بر اساس قالب‌های فایل ایجاد کنید.

برای ایجاد یک کلاس یا نوع جدید جاوا، مراحل زیر را دنبال کنید:

  1. در پنجره پروژه ، روی یک فایل یا پوشه جاوا کلیک راست کرده و New > Java Class را انتخاب کنید.
  2. روش دیگر این است که یک فایل یا پوشه جاوا را در پنجره پروژه انتخاب کنید، یا روی یک فایل جاوا در ویرایشگر کد کلیک کنید. سپس File > New > Java Class را انتخاب کنید.

    موردی که انتخاب می‌کنید، بسته‌ی پیش‌فرض برای کلاس یا نوع جدید را تعیین می‌کند.

  3. در پنجره‌ی «ایجاد کلاس جدید» ، فیلدها را پر کنید:
    • نام - نام کلاس یا نوع جدید. باید با الزامات نام جاوا مطابقت داشته باشد. پسوند نام فایل را تایپ نکنید.
    • نوع - دسته کلاس یا نوع را انتخاب کنید.
    • سوپرکلاس - کلاسی که کلاس جدید شما از آن ارث‌بری می‌کند. می‌توانید نام پکیج و کلاس، یا فقط نام کلاس را تایپ کنید و سپس روی یک آیتم در لیست کشویی دوبار کلیک کنید تا به صورت خودکار تکمیل شود.
    • رابط(ها) - یک یا چند رابط که کلاس یا نوع جدید پیاده‌سازی می‌کند. چندین رابط باید با یک کاما و به دنبال آن یک فاصله اختیاری از هم جدا شوند. می‌توانید نام بسته و رابط یا فقط نام رابط را تایپ کنید و سپس برای تکمیل خودکار آن، روی یک مورد در لیست کشویی دوبار کلیک کنید.
    • تکمیل خودکار فقط برای اولین نام رابط کار می‌کند. توجه داشته باشید که اگرچه کاما و نام رابط بعدی می‌توانند خطای tooltip ایجاد کنند، می‌توانید از این خطا چشم‌پوشی کنید زیرا بر کد تولید شده تأثیری نمی‌گذارد.

    • بسته - بسته‌ای که کلاس یا نوع در آن قرار می‌گیرد. پیش‌فرض به طور خودکار در فیلد ظاهر می‌شود. اگر نام بسته را در فیلد تایپ کنید، هر بخش از شناسه بسته که وجود ندارد، با رنگ قرمز برجسته می‌شود؛ در این حالت، اندروید استودیو پس از کلیک روی تأیید، بسته را ایجاد می‌کند. این فیلد باید حاوی یک مقدار باشد؛ در غیر این صورت، فایل جاوا حاوی عبارت package نخواهد بود و کلاس یا نوع در یک بسته در پروژه قرار نمی‌گیرد.
    • پیش‌فرض بستگی به نحوه‌ی اجرای پنجره‌ی «ایجاد کلاس جدید» دارد. اگر ابتدا یک فایل یا پوشه‌ی جاوا را در پنجره‌ی «پروژه» انتخاب کرده باشید، پیش‌فرض بسته‌ای است که برای آیتم انتخاب شده در نظر گرفته شده است. اگر ابتدا در ویرایشگر کد روی یک فایل جاوا کلیک کرده باشید، پیش‌فرض بسته‌ای است که حاوی این فایل است.

    • قابلیت مشاهده - انتخاب کنید که آیا کلاس یا نوع برای همه کلاس‌ها قابل مشاهده باشد یا فقط برای کلاس‌های موجود در بسته خودش.
    • اصلاح‌کننده‌ها - اصلاح‌کننده‌ی Abstract یا Final را برای یک کلاس انتخاب کنید، یا هیچ‌کدام را.
    • نمایش دیالوگ انتخاب لغوها - برای یک نوع کلاس ، این گزینه را علامت بزنید تا دیالوگ انتخاب متدها برای لغو/پیاده‌سازی پس از کلیک روی تأیید باز شود. در این دیالوگ، می‌توانید متدهایی را که می‌خواهید لغو یا پیاده‌سازی کنید انتخاب کنید و اندروید استودیو کد اصلی را برای این متدها تولید می‌کند.

    هر فیلدی که به نوع (Kind) مربوط نباشد، پنهان است.

  4. روی تأیید کلیک کنید.
  5. اندروید استودیو یک فایل جاوا با کد اصلی ایجاد می‌کند که می‌توانید آن را تغییر دهید. این فایل در ویرایشگر کد باز می‌شود.

نکته: می‌توانید با انتخاب File > New > Singleton یا File > New > Java Class یک کلاس Singleton ایجاد کنید؛ روش دوم گزینه‌های بیشتری را ارائه می‌دهد.

قالب‌های فایل اندروید استودیو

این بخش کد الگوی فایل اندروید استودیو که به زبان اسکریپت‌نویسی VTL نوشته شده است را فهرست می‌کند و پس از آن تعاریف متغیرها آمده است. مقادیری که شما در کادر محاوره‌ای ایجاد کلاس جدید ارائه می‌دهید، به مقادیر متغیر در الگو تبدیل می‌شوند. توجه داشته باشید که خطوطی که با #if (${VISIBILITY} شروع می‌شوند، تا آکولاد باز ( { ) ادامه می‌یابند.

الگوی فایل AnnotationType

#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end

#if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK}
#end
#parse("File Header.java")

#if (${VISIBILITY} == "PUBLIC")public #end @interface ${NAME} #if (${INTERFACES} != "")extends ${INTERFACES} #end {
}

الگوی فایل کلاس

#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end

#if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK}
#end
#parse("File Header.java")

#if (${VISIBILITY} == "PUBLIC")public #end #if (${ABSTRACT} == "TRUE")abstract #end #if (${FINAL} == "TRUE")final #end class ${NAME} #if (${SUPERCLASS} != "")extends ${SUPERCLASS} #end #if (${INTERFACES} != "")implements ${INTERFACES} #end {
}

الگوی فایل شمارشی (Enum)

#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end

#if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK}
#end
#parse("File Header.java")

#if (${VISIBILITY} == "PUBLIC")public #end enum ${NAME} #if (${INTERFACES} != "")implements ${INTERFACES} #end {
}

الگوی فایل رابط

#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end

#if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK}
#end
#parse("File Header.java")

#if (${VISIBILITY} == "PUBLIC")public #end enum ${NAME} #if (${INTERFACES} != "")implements ${INTERFACES} #end {
#end {
}

الگوی فایل سینگلتون

#if (${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end

#if (${IMPORT_BLOCK} != "")${IMPORT_BLOCK}
#end
#parse("File Header.java")

#if (${VISIBILITY} == "PUBLIC")public #end class ${NAME} #if (${SUPERCLASS} != "")extends ${SUPERCLASS} #end #if (${INTERFACES} != "")implements ${INTERFACES} #end {
    private static final ${NAME} ourInstance = new ${NAME}();

    #if (${VISIBILITY} == "PUBLIC")public #end static ${NAME} getInstance() {
        return ourInstance;
    }

    private ${NAME}() {
    }
}

متغیرهای قالب فایل

اندروید استودیو متغیرهای قالب فایل را با مقادیر موجود در فایل جاوای تولید شده جایگزین می‌کند. شما این مقادیر را در کادر محاوره‌ای Create New Class وارد می‌کنید. این قالب دارای متغیرهای زیر است که می‌توانید از آنها استفاده کنید:

  • IMPORT_BLOCK - فهرستی از دستورات import جاوا که با خط جدید از هم جدا شده‌اند و برای پشتیبانی از هرگونه کلاس بالا یا رابط‌ها ضروری هستند، یا یک رشته خالی ( "" ) است. برای مثال، اگر فقط رابط Runnable را پیاده‌سازی کنید و چیزی را ارث‌بری نکنید، این متغیر "import java.lang.Runnable;\n" خواهد بود. اگر رابط Runnable را پیاده‌سازی کنید و کلاس Activity را ارث‌بری کنید، این متغیر "import android.app.Activity;\nimportjava.lang.Runnable;\n" خواهد بود.
  • VISIBILITY - اینکه آیا کلاس دسترسی عمومی خواهد داشت یا خیر. می‌تواند مقداری از نوع PUBLIC یا PACKAGE_PRIVATE داشته باشد.
  • SUPERCLASS - یک نام کلاس واحد یا خالی. در صورت وجود، یک عبارت extends ${SUPERCLASS} بعد از نام کلاس جدید وجود خواهد داشت.
  • INTERFACES - فهرستی از رابط‌ها که با کاما از هم جدا شده‌اند، یا خالی هستند. در صورت وجود، یک عبارت implements ${INTERFACES} بعد از کلاس اصلی، یا اگر کلاس اصلی وجود نداشته باشد، بعد از نام کلاس، وجود خواهد داشت. برای رابط‌ها و انواع حاشیه‌نویسی، رابط‌ها دارای کلمه کلیدی extends هستند.
  • ABSTRACT - اینکه آیا کلاس باید انتزاعی باشد یا خیر. می‌تواند مقدار TRUE یا FALSE داشته باشد.
  • FINAL - اینکه آیا کلاس باید نهایی باشد یا خیر. می‌تواند مقدار TRUE یا FALSE داشته باشد.