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

Ola*_*ahl 183 java

在C#中,我们有Type.FullNameType.Name获取类型的名称(在本例中为类),有或没有命名空间(java-world中的包).

什么是Java相当于Type.Name

显然,必须有一种比Class.getName()手动使用和剥离包名称更好的方法.

Boz*_*zho 331

Class.getSimpleName()

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

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

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

  • 我不知道它可能会返回一个空字符串,而恕我直言,这是一个设计缺陷.如果没有简单的名称,它应该抛出异常. (3认同)

小智 20

以下函数适用于JDK 1.5及更高版本.

public String getSimpleName()
Run Code Online (Sandbox Code Playgroud)


Fid*_*del 14

如果使用StackTraceElement,请使用:

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

System.out.println(simpleClassName);
Run Code Online (Sandbox Code Playgroud)

  • 问题是关于您拥有类对象而不是堆栈跟踪的情况。 (3认同)