Avatar ·

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 ?