2010-04-22 62 views
146

在C#中我们有Type.FullNameType.Name以获取名称空间(java-world中的包)中的类型名称(本例中为类)。如何在没有包的情况下获取课程的名称?

什么是java相当于Type.Name

很明显,必须有一个比使用Class.getName()更好的方法,并且手动删除包名称。

+1

我做了一个快速的搜索,是不是由我在谷歌发现这样认为这是一个免费搭乘第一结果印象深刻。 – 2010-04-22 11:31:35

+5

忘记Google! **关于Java标准类库的答案的第一个地方是Java API文档(又称为javadocs):http://java.sun.com/javase/reference/api.jsp – 2010-04-22 12:06:20

回答

267

Class.getSimpleName()

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

数组的简单名称是附加了“[]”的组件类型的简单名称。特别是组件类型为匿名的数组的简单名称是“[]”。

它实际上从名称中剥离了包信息,但是这对您是隐藏的。

+0

它还映射内部一个匿名类的名称为一个空字符串,并执行数组类名。 – 2010-04-22 12:03:17

+1

我不知道它可能会返回一个空字符串,恕我直言,这是一个设计缺陷。如果没有简单的名字,它应该抛出异常。 – finnw 2010-04-22 13:20:30

15

以下函数将在JDK 1.5及更高版本中使用。

public String getSimpleName() 
10

如果使用的StackTraceElement,使用:

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

System.out.println(simpleClassName); 
相关问题