فئة Java الداخلية المجهولة هي فئة داخلية بدون اسم ويتم إنشاء كائن واحد فقط لها. يمكن أن تكون الفئة الداخلية المجهولة مفيدة عند إنشاء مثيل لكائن يحتوي على 'إضافات' معينة مثل أساليب التحميل الزائد لفئة أو واجهة، دون الحاجة إلى تصنيف فئة فرعية فعليًا.
بكلمات بسيطة، تُعرف الفئة التي ليس لها اسم بالفئة الداخلية المجهولة في Java. يجب استخدامه إذا كان عليك تجاوز طريقة الفصل أو الواجهة. يمكن إنشاء فئة Java الداخلية المجهولة بطريقتين:
- الطبقة (قد تكون مجردة أو ملموسة).
- واجهه المستخدم
مثال على فئة داخلية مجهولة في Java باستخدام الفصل
TestAnonymousInner.java
abstract class Person{ abstract void eat(); } class TestAnonymousInner{ public static void main(String args[]){ Person p=new Person(){ void eat(){System.out.println('nice fruits');} }; p.eat(); } }اختبره الآن
انتاج:
nice fruits
العمل الداخلي للكود المحدد
Person p=new Person(){ void eat(){System.out.println('nice fruits');} };
- يتم إنشاء فئة، ولكن يتم تحديد اسمها بواسطة المترجم، الذي يقوم بتوسيع فئة الشخص ويوفر تنفيذ طريقة Eat ().
- يتم إنشاء كائن من الفئة المجهولة والذي تتم الإشارة إليه بواسطة 'p'، وهو متغير مرجعي من نوع الشخص.
فئة داخلية تم إنشاؤها بواسطة المترجم
import java.io.PrintStream; static class TestAnonymousInner$1 extends Person { TestAnonymousInner$1(){} void eat() { System.out.println('nice fruits'); } }
جافا مثال الطبقة الداخلية المجهولة باستخدام الواجهة
interface Eatable{ void eat(); } class TestAnnonymousInner1{ public static void main(String args[]){ Eatable e=new Eatable(){ public void eat(){System.out.println('nice fruits');} }; e.eat(); } }اختبره الآن
انتاج:
nice fruits
العمل الداخلي للكود المحدد
ينفذ مهمتين رئيسيتين وراء هذا الرمز:
Eatable p=new Eatable(){ void eat(){System.out.println('nice fruits');} };
- يتم إنشاء فئة، ولكن يتم تحديد اسمها بواسطة المترجم، الذي ينفذ واجهة Eatable ويوفر تنفيذ طريقة Eat().
- يتم إنشاء كائن من الفئة Anonymous يُشار إليه بواسطة 'p'، وهو متغير مرجعي من النوع Eatable.
فئة داخلية تم إنشاؤها بواسطة المترجم
import java.io.PrintStream; static class TestAnonymousInner1$1 implements Eatable { TestAnonymousInner1$1(){} void eat(){System.out.println('nice fruits');} }