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

时间:2014-04-04 16:04:29

标签: java reflection

我有一个课程,想要得到它的名字以供展示。

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

我们假设objKeyDownEvent.Listener的实例(KeyEvent内的嵌套界面)。

  • 如果我使用cls.getSimpleName(),我会Listener - 可以轻松获得更多名称。
  • 如果我使用cls.getName(),我会获得包裹的全名 - 确切地说,但在日志中阅读并不容易。

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


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

虽然KeyDownEvent.Listener不准确,因为在不同的包中可能有多个具有此类名称的类,但我将承担风险。它比包裹的整个名称更好。

1 个答案:

答案 0 :(得分:1)

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

技巧是class.getEnclosingClass()

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