Avatar ·

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`。但我听说对于嵌套类或数组,它们可能会有所不同。你能用实际例子解释一下在哪些情况下这些方法会给出不同的结果吗?