问题

我所要做的就是获取当前的类名,并且java将无用的非sense**$ 1**附加到我的类名末尾。我怎样才能摆脱它并只返回实际的类名?

String className = this.getClass().getName();

#1 热门回答(210 赞)

"1美元"不是"无用的无意义"。如果你的班级是匿名的,则会附加一个数字。

如果你不想让类本身,但它的声明类,那么你可以使用getEnclosingClass()。例如:

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

你可以使用某种静态实用程序方法移动它。

但请注意,这不是当前的类名。匿名类与其封闭类不同。对于内部类,情况类似。


#2 热门回答(175 赞)

尝试,

String className = this.getClass().getSimpleName();

只要你不在静态方法中使用它,这将起作用。


#3 热门回答(18 赞)

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


原文链接