【发布时间】:2022-01-19 08:02:25
【问题描述】:
我正在使用反射线记录函数名称
this.getClass().getEnclosingMethod().getName()
但它抛出 NULLPointerException 因为 this.getClass().getEnclosureMethod() 正在返回 Null,
虽然
this.getClass().getMethods()[0].getName() working fine.
为什么反射方法getEnclosureMethod()会抛出Null指针异常。 解决方法是什么
Java 版本:11
【问题讨论】:
-
你为什么期望
getEnclosingMethod返回null以外的东西? -
不乔,它没有回答,我问的是为什么这会返回 Null 而不是特定的 functionName this.getClass().getEnclosureMethod().getName() 我们不应该使用它吗?我
-
哦,这很好地回答了你的问题。你的问题是你的假设是有缺陷的。所以,你不应该使用这个。提供给您的链接告诉您如何获取方法名称。
-
并提示:答案确实在 javadocs 中。阅读这些方法的作用。最后:
this.getClass().getMethods()[0].getName() working fine.现在不是。这将始终返回该类的第一个方法的名称。它只是使用反射来获取该类的“静态”(不改变“)方法列表。尝试在具有多个方法的方法中使用它。令人惊讶的是,它不起作用。
标签: java