我所要做的就是获得当前的类名,而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());
}
你可以把它移到一些静态实用方法中。
但是请注意,这不是当前类的名称。匿名类与它的包围类是不同的类。内层类的情况也类似。
试着使用这个
this.getClass().getCanonicalName()
或this.getClass().getSimpleName()
。 如果是匿名类,则使用this.getClass().getSuperclass().getName()
。