شارك المقالة

إذا أردت معرفة نوع قيمة أثناء تشغيل برنامج Java، فابدأ بتحديد ما إذا كان المتغير من الأنواع البدائية مثل int وdouble أم كائنًا مثل String. هذا الفرق مهم لأن الأنواع البدائية لا تملك دوالًا، بينما الكائنات ترث الدالة getClass() من Object.

معرفة نوع كائن في Java

للكائنات استخدم getClass().getSimpleName(). المثال التالي يطبع اسم الصنف الفعلي للقيمة:

public class Main {
    public static void main(String[] args) {
        String name = "Java";
        Integer count = 5;

        System.out.println(name.getClass().getSimpleName());  // String
        System.out.println(count.getClass().getSimpleName()); // Integer
    }
}

تُرجع getClass() كائن Class يصف الصنف وقت التشغيل، وتعرض getSimpleName() اسمه دون اسم الحزمة. لا تستدعِها على قيمة null لأنها ستؤدي إلى NullPointerException؛ تحقّق من القيمة أولًا.

ماذا عن الأنواع البدائية مثل int؟

لا يمكن كتابة x.getClass() إذا كان x من النوع int، لأن int ليس كائنًا. عند الحاجة إلى فحص قيمة بدائية مؤقتًا، يحوّلها Java إلى الصنف المغلف المقابل (boxing):

public class Main {
    public static void main(String[] args) {
        int x = 5;
        System.out.println(((Object) x).getClass().getSimpleName()); // Integer
    }
}

الناتج هنا هو Integer، أي نوع الكائن بعد التحويل، وليس اسم النوع البدائي int. إذا كان المطلوب معرفة النوع الذي عرّفته في الشيفرة، فاستخدم int.class أو افحصه مباشرةً في وقت الترجمة؛ لا توجد طريقة عامة تسترجع تصريح المتغير المحلي من البرنامج أثناء التشغيل.

اختيار النوع دون فحص وقت التشغيل

في الشيفرة المعتادة، الأفضل أن تعرف النوع من التصريح نفسه أو تستخدم واجهات Java وأنواعها العامة. وللتحقق من توافق كائن مع صنف معيّن، استخدم instanceof:

Object value = "Geecoders";
if (value instanceof String text) {
    System.out.println(text.length());
}

صيغة مطابقة النمط في instanceof متاحة في إصدارات Java الحديثة. في إصدار أقدم يمكنك كتابة if (value instanceof String) { String text = (String) value; }. أما تحويل int إلى Integer في المثال السابق فهو مفيد للتعلّم أو التشخيص، لكنه ليس بديلًا عن تصميم أنواع واضحة في البرنامج.

خلاصة سريعة

  • الكائن: استخدم object.getClass().getSimpleName() بعد التأكد أنه ليس null.
  • النوع البدائي: لا يملك getClass()؛ تحويله إلى Object ينتج اسم الصنف المغلف مثل Integer.
  • فحص نوع كائن قبل استخدامه: استخدم instanceof، وفضّل الواجهات والأنواع العامة في تصميمك.

للمزيد من أمثلة Java، راجع برنامج حساب مساحة الدائرة بالجافا ومثال رسم قوس في Java.

شاهد أيضًا
مقالات ذات صلة
🚫 مانع الإعلانات مفعل

يجب إيقاف مانع الإعلانات لاستكمال تصفح الموقع