Quelle est la différence entre getName(), getCanonicalName() et getSimpleName() en Java ?
Bonjour ! Je viens de commencer à étudier la réflexion en Java et je suis tombé sur trois méthodes : `getName()`, `getCanonicalName()` et `getSimpleName()`. Je ne comprends pas bien en quoi elles diffèrent.
Par exemple, j'ai une classe simple `Person` dans le package `com.example.model`. J'ai essayé d'écrire ce code :
```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());
}
}
```
Les trois méthodes affichent quelque chose de similaire : `getName` montre `com.example.model.Person`, `getSimpleName` — juste `Person`, et `getCanonicalName` — aussi `com.example.model.Person`. Mais j'ai entendu dire que pour les classes imbriquées ou les tableaux, elles peuvent différer. Pouvez-vous expliquer avec des exemples concrets dans quelles situations ces méthodes donnent des résultats différents ?