没有包的情况下如何获取类的名称?


199

在C#中,我们有Type.FullNameType.Name有或没有命名空间(包在Java世界中)得到一个类型(类在这种情况下)的名称。

java等于Type.Name什么?

显然,有比Class.getName()手动使用和删除软件包名称更好的方法。


1
我对此进行了快速搜索,并没有被我在Google上找到的第一笔结果所打动,因此可以将其视为免费赠品。
Ola Herrdahl

5
忘了Google!寻找有关Java标准类库的答案的第一位是Java API文档(aka Javadocs):java.sun.com/javase/reference/api.jsp
Stephen C 2010年

Answers:


358

Class.getSimpleName()

返回源代码中给定的基础类的简单名称。如果基础类是匿名的,则返回一个空字符串。

数组的简单名称是组件类型的简单名称,后接“ []”。特别是其组件类型为匿名的数组的简单名称为“ []”。

它实际上是从名称中删除软件包信息,但是对您而言是隐藏的。


它还将匿名类的内部名称映射到一个空的String,并使用数组类名称进行填充。
Stephen C

4
我不知道它可以返回空字符串,恕我直言,这是一个设计缺陷。如果没有简单的名称,则应引发异常。
finnw 2010年

20

以下功能将在JDK 1.5及更高版本中起作用。

public String getSimpleName()

14

如果使用StackTraceElement,请使用:

String fullClassName = stackTraceElement.getClassName();
String simpleClassName = fullClassName.substring(fullClassName.lastIndexOf('.') + 1);

System.out.println(simpleClassName);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.