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

Java 如何在没有包的情况下获取类的名称?,java,Java,在C#中,我们有Type.FullName和Type.Name来获取类型(在本例中为类)的名称,该类型包含或不包含名称空间(java世界中的包) java与Type.Name的等价物是什么 显然,一定有比使用Class.getName()并手动将其从包名中删除更好的方法 返回源代码中给定的基础类的简单名称。如果基础类是匿名的,则返回空字符串 数组的简单名称是附加了“[]”的组件类型的简单名称。尤其是组件类型为匿名的数组的简单名称为“[]” 它实际上是从名称中剥离包信息,但这对您是隐藏的。以下函

在C#中,我们有
Type.FullName
Type.Name
来获取类型(在本例中为类)的名称,该类型包含或不包含名称空间(java世界中的包)

java与
Type.Name
的等价物是什么

显然,一定有比使用
Class.getName()
并手动将其从包名中删除更好的方法

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

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


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

以下函数将在JDK 1.5版及更高版本中工作

public String getSimpleName()

如果使用StackTraceElement,请使用:

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

System.out.println(simpleClassName);

我快速搜索了这一点,对我在谷歌上发现的第一个结果印象不深,所以把它看作是免费的。忘记谷歌!关于Java标准类库,首先要寻找答案的是Java API文档(又名javadocs):关于这个问题的字面答案,请参阅:。它还将匿名类的内部名称映射为空字符串,并使用数组类名进行填充。我不知道它会返回空字符串,这是一个设计缺陷。如果没有简单的名称,它应该抛出一个异常。对于内部类,它不仅剥离包,而且剥离外部类的名称。(我想要另一种行为,所以这个答案对我来说是错误的。)@toolforger将
this.getClass.getEnclosuringClass.getSimpleName+“$”+this.getClass.getSimpleName
为您的目的工作?@AlonsodelArte不确定(存在复杂的情况,如多个嵌套级别和匿名类)。无论如何都不太相关,我只是想指出,对于所写的问题,答案在技术上是不正确的。这是已接受答案的副本,因此您可以删除它。问题是关于您拥有类对象的情况,而不是堆栈跟踪。