ما الفرق بين getName() و getCanonicalName() و getSimpleName() في Java؟
مرحبًا! بدأت للتو في تعلم الانعكاس في Java ووجدت ثلاث طرق: `getName()` و `getCanonicalName()` و `getSimpleName()`. لا أفهم تمامًا كيف تختلف.
على سبيل المثال، لدي كلاس بسيط `Person` في الحزمة `com.example.model`. جربت كتابة هذا الكود:
```java
package com.example.model;
public class Person {
public static void main(String[] args) {
Class> clazz = Person.class;
System.out.println("getName: " + clazz.getName());
System.out.println("getSimpleName: " + clazz.getSimpleName());
System.out.println("getCanonicalName: " + clazz.getCanonicalName());
}
}
```
الطرق الثلاثة تُظهر شيئًا مشابهًا: `getName` يُظهر `com.example.model.Person`، و `getSimpleName` يُظهر فقط `Person`، و `getCanonicalName` يُظهر أيضًا `com.example.model.Person`. لكنني سمعت أنه بالنسبة للكلاسات المتداخلة أو المصفوفات، قد تختلف. هل يمكنك التوضيح بأمثلة حقيقية عن الحالات التي تعطي فيها هذه الطرق نتائج مختلفة؟