我所要做的就是获得当前的类名,而java在我的类名后面附加了一个无用的非物质的$1。我怎样才能去掉它,只返回实际的类名?
String className = this.getClass().getName();
这个"1"不是"无用的废话"。如果你的类是匿名的,就会附加上一个数字。
如果你不想要这个类本身,而是想要它的声明类,那么你可以使用getEnclosingClass()。比如说。
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()。
this.getClass().getCanonicalName()
this.getClass().getSimpleName()
this.getClass().getSuperclass().getName()
在你的例子中,this可能指的是一个匿名的类实例。Java通过在包围类的名字后面加上一个$number来给这些类起名字。
this
$number
这个"1"不是"无用的废话"。如果你的类是匿名的,就会附加上一个数字。
如果你不想要这个类本身,而是想要它的声明类,那么你可以使用
getEnclosingClass()
。比如说。你可以把它移到一些静态实用方法中。
但是请注意,这不是当前类的名称。匿名类与它的包围类是不同的类。内层类的情况也类似。
试着使用这个
this.getClass().getCanonicalName()
或this.getClass().getSimpleName()
。 如果是匿名类,则使用this.getClass().getSuperclass().getName()
。在你的例子中,
this
可能指的是一个匿名的类实例。Java通过在包围类的名字后面加上一个$number
来给这些类起名字。