Java - 获取当前类的名称?

我所要做的就是获得当前的类名,而java在我的类名后面附加了一个无用的非物质的$1。我怎样才能去掉它,只返回实际的类名?

String className = this.getClass().getName();
解决办法

这个"1"不是"无用的废话"。如果你的类是匿名的,就会附加上一个数字。

如果你不想要这个类本身,而是想要它的声明类,那么你可以使用getEnclosingClass()。比如说。

Class<?> enclosingClass = getClass().getEnclosingClass();
if (enclosingClass != null) {
  System.out.println(enclosingClass.getName());
} else {
  System.out.println(getClass().getName());
}

你可以把它移到一些静态实用方法中。

但是请注意,这不是当前类的名称。匿名类与它的包围类是不同的类。内层类的情况也类似。

评论(1)

试着使用这个 this.getClass().getCanonicalName()this.getClass().getSimpleName()。 如果是匿名类,则使用this.getClass().getSuperclass().getName()

评论(7)

在你的例子中,this可能指的是一个匿名的类实例。Java通过在包围类的名字后面加上一个$number来给这些类起名字。

评论(1)