إنشاء فئة أو نوع بلغة Java
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
من خلال مربّع الحوار إنشاء صف جديد ونماذج الملفات، يساعدك "استوديو Android" في إنشاء الصفوف والأنواع الجديدة التالية بسرعة:
- فئات Java
- فئات التعداد والفئات الفردية
- أنواع الواجهات والتعليقات التوضيحية
بعد ملء حقول مربّع الحوار إنشاء صف جديد والنقر على حسنًا، ينشئ Android Studio ملف .java
يحتوي على رمز هيكلي، بما في ذلك عبارة حزمة وأي عمليات استيراد ضرورية وعنوان وإعلان صف أو نوع. بعد ذلك، يمكنك إضافة الرمز إلى هذا الملف.
تحدّد نماذج الملفات كيفية إنشاء "استوديو Android" لرمز الهيكل. يمكنك استخدام نماذج الملفات المتوفّرة مع "استوديو Android" كما هي أو تخصيصها لتناسب عملية التطوير.
عرض نماذج الملفات وتخصيصها
يوفر Android Studio نماذج ملفات تحدد كيفية إنشاء فئات وأنواع Java جديدة باستخدام مربّع الحوار إنشاء فئة جديدة. يمكنك تخصيص هذه النماذج.
الشكل 1 مربّع الحوار إنشاء صف جديد
تتضمّن نماذج ملفات Android Studio رمز VTL (لغة نموذج Velocity) ومتغيّرات تعالج هذه الخيارات الإضافية.
يستخدم مربّع الحوار إنشاء صف جديد نماذج الملفات AnnotationType وClass وEnum وInterface وSingleton.
للاطّلاع على النماذج والعثور على التخصيصات وتعديل النماذج، اتّبِع الخطوات التالية:
نفّذ أيًا مما يلي:
- في نظام التشغيل Windows أو Linux، اختَر ملف > الإعدادات > المحرّر > نماذج الملفات والرموز > الملفات.
- في نظام التشغيل macOS، اختَر Android Studio > الإعدادات المفضّلة > المحرّر > نماذج الملفات والرموز > الملفات.
في قائمة النماذج،
تظهر أسماء النماذج الداخلية بخط غليظ. تظهر أسماء النماذج المخصّصة بلون مميّز، مثل الأزرق.
خصِّص نماذج الملفات حسب الحاجة.
إذا كنت تريد استخدام حقول مربّع الحوار إنشاء فئة جديدة، تأكَّد من أنّ التغييرات التي تجريها تتوافق مع رمز نموذج ملف "استوديو Android".
لمزيد من المعلومات حول نماذج الملفات، بما في ذلك VTL، راجِع نماذج الملفات والتعليمات البرمجية ومربّع حوار نماذج الملفات والتعليمات البرمجية.
إنشاء فئة أو نوع Java
يساعدك "استوديو Android" في إنشاء فئات Java جديدة، وفئات التعداد والنمط الفردي، وأنواع الواجهات والتعليقات التوضيحية استنادًا إلى نماذج الملفات.
لإنشاء فئة أو نوع Java جديد، اتّبِع الخطوات التالية:
- في نافذة المشروع، انقر بزر الماوس الأيمن على ملف أو مجلد Java،
واختَر جديد (New) > فئة Java (Java Class).
يمكنك بدلاً من ذلك اختيار ملف أو مجلد Java في نافذة المشروع، أو النقر في ملف Java في "محرّر الرموز". بعد ذلك، انقر على
ملف > جديد > فئة Java.
يحدّد العنصر الذي تختاره الحزمة التلقائية للصف أو النوع الجديد.
- في مربّع الحوار إنشاء صف جديد، املأ الحقول التالية:
- الاسم: اسم الفئة أو النوع الجديدَين. ويجب أن يتوافق مع متطلبات أسماء Java. لا تكتب امتداد اسم الملف.
- النوع: اختَر فئة الصف أو النوع.
- الفئة الرئيسية: هي الفئة التي يرث منها صفك الجديد.
يمكنك كتابة اسم الحزمة واسم الفئة، أو اسم الفئة فقط، ثم النقر مرّتين على عنصر في القائمة المنسدلة لإكماله تلقائيًا.
- الواجهات: واجهة واحدة أو أكثر تنفّذها الفئة أو النوع الجديدان. يجب الفصل بين الواجهات المتعددة بفاصلة متبوعة بمسافة اختيارية. يمكنك كتابة اسم الحزمة واسم الواجهة، أو اسم الواجهة فقط، ثم النقر مرّتين على عنصر في القائمة المنسدلة لإكمالها تلقائيًا.
تعمل ميزة الإكمال التلقائي مع اسم الواجهة الأول فقط. يُرجى العِلم أنّه على الرغم من أنّ الفاصلة واسم الواجهة التاليَين يمكن أن يؤديا إلى ظهور خطأ في تلميح الأدوات، يمكنك تجاهل الخطأ لأنّه لا يؤثر في الرمز البرمجي الذي تم إنشاؤه.
- الحزمة: الحزمة التي سيتم تخزين الفئة أو النوع فيها. تظهر القيمة التلقائية تلقائيًا في الحقل. إذا كتبت اسم حزمة في الحقل، سيتم تمييز أي أجزاء من معرّف الحزمة غير المتوفّرة باللون الأحمر. وفي هذه الحالة، ينشئ Android Studio الحزمة بعد النقر على موافق. يجب أن يحتوي هذا الحقل على قيمة، وإلا لن يحتوي ملف Java على عبارة
package
، ولن يتم وضع الفئة أو النوع ضمن حزمة في المشروع.
يعتمد الإعداد التلقائي على طريقة فتح مربّع الحوار إنشاء صف جديد. إذا اخترت أولاً ملف Java أو مجلدًا في نافذة المشروع، سيكون الإعداد التلقائي هو الحزمة الخاصة بالعنصر الذي اخترته. إذا نقرت أولاً في ملف Java في "محرّر الرموز"، سيكون الإعداد التلقائي هو الحزمة التي تحتوي على هذا الملف.
- مستوى العرض: اختَر ما إذا كان الصف أو النوع مرئيًا لجميع الصفوف أو للصفوف الموجودة في الحزمة نفسها فقط.
- المعدّلات: اختَر المعدّل Abstract أو Final للفئة، أو لا تختَر أيًا منهما.
- عرض مربّع الحوار "اختيار عمليات الإلغاء" (Show Select Overrides Dialog): بالنسبة إلى النوع من الفئة، ضَع علامة في هذا الخيار لفتح مربّع الحوار "اختيار الطرق المطلوب إلغاؤها/تنفيذها" (Select
Methods to Override/Implement dialog) بعد النقر على حسنًا (OK). في هذا المربّع، يمكنك اختيار الطرق التي تريد تجاهلها أو تنفيذها، وسينشئ "استوديو Android" رمزًا هيكليًا لهذه الطرق.
يتم إخفاء أي حقول لا تنطبق على النوع.
- انقر على موافق.
ينشئ "استوديو Android" ملف Java يحتوي على رمز هيكلي يمكنك تعديله. سيتم فتح الملف في "أداة تعديل الرموز".
ملاحظة: يمكنك إنشاء فئة singleton من خلال اختيار
ملف (File) > جديد (New) > Singleton أو
ملف (File) > جديد (New) > فئة Java (Java Class)،
ويوفّر الأسلوب الأخير المزيد من الخيارات.
نماذج ملفات "استوديو Android"
يسرد هذا القسم رمز نموذج ملف Android Studio المكتوب بلغة البرمجة النصية 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 {
}
نموذج ملف التعداد
#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 {
}
نموذج ملف Singleton
#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}() {
}
}
متغيّرات نموذج الملف
يستبدل Android Studio متغيرات نموذج الملف بقيم في ملف Java الذي تم إنشاؤه. يمكنك إدخال القيم في مربّع الحوار إنشاء صف جديد.
يتضمّن النموذج المتغيّرات التالية التي يمكنك استخدامها:
IMPORT_BLOCK
: قائمة مفصولة بأحرف سطر جديد تتضمّن عبارات Java
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
.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-08-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-08-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["With the **Create New Class** dialog and file templates, Android\nStudio helps you to quickly create the following new classes and types:\n\n- Java classes\n- Enumeration and singleton classes\n- Interface and annotation types\n\n\nAfter you fill in the **Create New Class** dialog fields and click\n**OK** , Android Studio creates a `.java` file containing\nskeleton code, including a package statement, any necessary imports, a header,\nand a class or type declaration. Next, you can add your code to this file.\n\n\nFile templates specify how Android Studio generates the skeleton code. You can\nuse the file templates provided with Android Studio as is, or customize them to\nsuit your development process.\n\nViewing and customizing file templates\n\n\nAndroid Studio provides file templates that determine how new Java classes and\ntypes are created with the **Create New Class** dialog. You can\ncustomize these templates.\n\n\n**Figure 1** . The **Create New Class**\ndialog.\n\nThe Android Studio file templates include Velocity Template Language ([VTL](https://velocity.apache.org/engine/)) code\nand variables that handle these additional options.\nThe **Create New Class** dialog uses the **AnnotationType** ,\n**Class** ,\n**Enum** , **Interface** , and **Singleton**\nfile templates.\n\n\nTo view the templates, find customizations, and modify the templates, follow\nthese steps:\n\n1. Do one of the following:\n\n - For Windows or Linux, select **File \\\u003e Settings \\\u003e Editor \\\u003e File and Code\n Templates \\\u003e Files**.\n - For macOS, select **Android Studio \\\u003e Preferences \\\u003e Editor \\\u003e File and Code\n Templates \\\u003e Files**.\n\n In the [template list](https://www.jetbrains.com/help/idea/2025.1/settings-file-and-code-templates.html),\n internal template names are in bold font. Customized template names are\n displayed in a highlight color, such as blue.\n2. Customize the file templates as needed.\n\n If you want to use the **Create New Class** dialog fields, make sure your\n changes comply with the [Android Studio file template code](#templates).\n\n\nFor more information about file templates, including VTL, see [File\nand Code Templates](https://www.jetbrains.com/help/idea/2025.1/file-and-code-templates.html) and [File\nand Code Templates Dialog](https://www.jetbrains.com/help/idea/2025.1/settings-file-and-code-templates.html).\n\nCreating a Java class or type\n\n\nAndroid Studio helps you to create new Java classes; enumeration and singleton\nclasses; and interface and annotation types based on [file templates](#templates).\n\n\nTo create a new Java class or type, follow these steps:\n\n1. In the **Project** window, right-click a Java file or folder, and select **New** \\\u003e **Java Class**.\n2. Alternatively, select a Java file or folder in the **Project** window, or click in a Java file in the Code Editor. Then select **File** \\\u003e **New** \\\u003e **Java Class**.\n3. The item you select determines the default package for the new class or type.\n4. In the **Create New Class** dialog, fill in the fields:\n - **Name** - The name of the new class or type. It must comply with Java name requirements. Don't type a file name extension.\n - **Kind** - Select the category of class or type.\n - **Superclass** - The class that your new class inherits from. You can type the package and class name, or just the class name and then double-click an item in the drop-down list to autocomplete it.\n - **Interface(s)** - One or more interfaces that the new class or type implements. Multiple interfaces should be separated by a comma followed by an optional space. You can type the package and interface name, or just the interface name and then double-click an item in the drop-down list to autocomplete it.\n - Autocomplete works for the first interface name only. Note that while the comma and the following interface name can bring up a tooltip error, you can ignore the error because it doesn't affect the generated code.\n - **Package** - The package that the class or type will reside in. The default automatically appears in the field. If you type a package name in the field, any portions of the package identifier that don't exist are highlighted red; in this case, Android Studio creates the package after you click **OK** . This field must contain a value; otherwise, the Java file won't contain a `package` statement, and the class or type won't be placed within a package in the project.\n - The default depends on how you launched the **Create New Class** dialog. If you first selected a Java file or folder in the **Project** window, the default is the package for the item you selected. If you first clicked in a Java file in the Code Editor, the default is the package that contains this file.\n - **Visibility** - Select whether the class or type is visible to all classes, or just to those in its own package.\n - **Modifiers** - Select the **Abstract** or **Final** modifier for a **Class**, or neither.\n - **Show Select Overrides Dialog** - For a **Kind** of **Class** , check this option to open the [Select\n Methods to Override/Implement dialog](https://www.jetbrains.com/help/idea/2025.1/overriding-methods-of-a-superclass.html) after you click **OK**. In this dialog, you can select methods that you would like to override or implement, and Android Studio will generate skeleton code for these methods.\n5. Any fields that don't apply to the **Kind** are hidden.\n6. Click **OK**.\n7. Android Studio creates a Java file with skeleton code that you can modify. It opens the file in the Code Editor.\n\n\n**Note:** You can create a singleton class by selecting\n**File** \\\u003e **New** \\\u003e **Singleton** or\n**File** \\\u003e **New** \\\u003e **Java Class**; the\nlatter technique offers more options.\n\n\u003cbr /\u003e\n\nAndroid Studio file templates\n\n\nThis section lists the Android Studio file template code written in the [VTL](https://velocity.apache.org/engine/) scripting language, followed\nby definitions of the variables. The values that you provide in the\n**Create New Class** dialog become the variable values in the template.\nNote that the lines that begin with\n`#if (${VISIBILITY}` extend all the way to the open brace (\n`{` ).\n\nAnnotationType file template \n\n```\n#if (${PACKAGE_NAME} != \"\")package ${PACKAGE_NAME};#end\n\n#if (${IMPORT_BLOCK} != \"\")${IMPORT_BLOCK}\n#end\n#parse(\"File Header.java\")\n\n#if (${VISIBILITY} == \"PUBLIC\")public #end @interface ${NAME} #if (${INTERFACES} != \"\")extends ${INTERFACES} #end {\n}\n```\n\nClass file template \n\n```\n#if (${PACKAGE_NAME} != \"\")package ${PACKAGE_NAME};#end\n\n#if (${IMPORT_BLOCK} != \"\")${IMPORT_BLOCK}\n#end\n#parse(\"File Header.java\")\n\n#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 {\n}\n```\n\nEnum file template \n\n```\n#if (${PACKAGE_NAME} != \"\")package ${PACKAGE_NAME};#end\n\n#if (${IMPORT_BLOCK} != \"\")${IMPORT_BLOCK}\n#end\n#parse(\"File Header.java\")\n\n#if (${VISIBILITY} == \"PUBLIC\")public #end enum ${NAME} #if (${INTERFACES} != \"\")implements ${INTERFACES} #end {\n}\n```\n\nInterface file template \n\n```\n#if (${PACKAGE_NAME} != \"\")package ${PACKAGE_NAME};#end\n\n#if (${IMPORT_BLOCK} != \"\")${IMPORT_BLOCK}\n#end\n#parse(\"File Header.java\")\n\n#if (${VISIBILITY} == \"PUBLIC\")public #end enum ${NAME} #if (${INTERFACES} != \"\")implements ${INTERFACES} #end {\n#end {\n}\n```\n\nSingleton file template \n\n```\n#if (${PACKAGE_NAME} != \"\")package ${PACKAGE_NAME};#end\n\n#if (${IMPORT_BLOCK} != \"\")${IMPORT_BLOCK}\n#end\n#parse(\"File Header.java\")\n\n#if (${VISIBILITY} == \"PUBLIC\")public #end class ${NAME} #if (${SUPERCLASS} != \"\")extends ${SUPERCLASS} #end #if (${INTERFACES} != \"\")implements ${INTERFACES} #end {\n private static final ${NAME} ourInstance = new ${NAME}();\n\n #if (${VISIBILITY} == \"PUBLIC\")public #end static ${NAME} getInstance() {\n return ourInstance;\n }\n\n private ${NAME}() {\n }\n}\n```\n\nFile template variables\n\n\u003cbr /\u003e\n\n\nAndroid Studio replaces file template variables with values in the generated\nJava file. You enter the values in the **Create New Class** dialog.\nThe template has the following variables that you can use:\n\n- `IMPORT_BLOCK` - A newline-delimited list of Java `import` statements necessary to support any superclass or interfaces, or an empty string (`\"\"`). For example, If you only implement the `Runnable` interface and extend nothing, this variable will be `\"import java.lang.Runnable;\\n\"`. If you implement the `Runnable` interface and extend the `Activity` class, it will be `\"import android.app.Activity;\\nimportjava.lang.Runnable;\\n\"`.\n- `VISIBILITY` - Whether the class will have public access or not. It can have a value of `PUBLIC` or `PACKAGE_PRIVATE`.\n- `SUPERCLASS` - A single class name, or empty. If present, there will be an `extends ${SUPERCLASS}` clause after the new class name.\n- `INTERFACES` - A comma-separated list of interfaces, or empty. If present, there will be an `implements ${INTERFACES}` clause after the superclass, or after the class name if there's no superclass. For interfaces and annotation types, the interfaces have the `extends` keyword.\n- `ABSTRACT` - Whether the class should be abstract or not. It can have a value of `TRUE` or `FALSE`.\n- `FINAL` - Whether the class should be final or not. It can have a value of `TRUE` or `FALSE`.\n\n\u003cbr /\u003e"]]