我有一个课程,想要得到它的名字以供展示。
Class<?> cls = obj.getClass();
我们假设obj
是KeyDownEvent.Listener
的实例(KeyEvent
内的嵌套界面)。
cls.getSimpleName()
,我会Listener
- 可以轻松获得更多名称。cls.getName()
,我会获得包裹的全名 - 确切地说,但在日志中阅读并不容易。知道如何从"KeyDownEvent.Listener"
获取cls
吗?
请注意,我想在日志中使用结果。
虽然KeyDownEvent.Listener
不准确,因为在不同的包中可能有多个具有此类名称的类,但我将承担风险。它比包裹的整个名称更好。
答案 0 :(得分:1)
所以我找到了一个解决方案,可以帮助其他人。
技巧是class.getEnclosingClass()
:
Class<?> cls = obj.getClass();
Class<?> enclosing = cls.getEnclosingClass();
return
(enclosing == null ? "" : enclosing.getSimpleName() + ".")
+ cls.getSimpleName();