获取类简单名称(包括包装类!



我有一个类,想要获取它的名称以进行显示。

Class<?> cls = obj.getClass();

假设objKeyDownEvent.ListenerKeyEvent中的嵌套接口)的实例。

  • 如果我使用 cls.getSimpleName() ,我会得到Listener - 可以很容易地有更多带有该名称的名称。
  • 如果我使用 cls.getName() ,我会得到带有包的全名 - 准确,但在日志中阅读不是很容易。

知道如何从cls获得"KeyDownEvent.Listener"吗?


请注意,我想在日志中使用结果。

虽然KeyDownEvent.Listener并不准确,因为在不同的包中可以有多个具有这种名称的类,但我会冒险。它比带有包的全名更好。

所以我

找到了一个解决方案,可以帮助其他人。

诀窍是class.getEnclosingClass()

Class<?> cls = obj.getClass();
Class<?> enclosing = cls.getEnclosingClass();
return 
    (enclosing == null ? "" : enclosing.getSimpleName() + ".")
    + cls.getSimpleName();

相关内容

  • 没有找到相关文章

最新更新