gpt4 book ai didi

java - 如何在编译时获取方法名称?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:55:41 26 4
gpt4 key购买 nike

如何在编译时获取封闭的方法名称?

为什么我很难弄明白这一点?为什么 Java 不希望我这样做?我没有看到像这样的功能有任何固有问题,它对于记录方法名称很有用,而不会像这样在方法签名和字符串常量之间重复:

private void methodName() {
final String MN = "methodName";
...

有人可能改了方法名却没有改MN常量,然后我在日志中就找不到了。

我知道 Java 有一个(反射性的?)方法来执行此操作,但为什么有人会想要使事情过于复杂并使用运行时解决方案(针对这个特定问题)创造错误的可能性,这超出了我的理解范围。

显然宏是不好的做法,但我认为这对他们来说是一个很好的用例。这就是我基本上想要的东西,比如宏,一个常量。

顺便说一句,这个问题非常相似:

Getting the name of the current executing method

不过,没有一个解决方案是在编译时导出的常量。它们都是运行时计算。


编辑:为什么不能在编译时完成?

请不要给出诸如“这就是 Java 的设计方式”之类的琐碎回答,因为那样我只会问“为什么?”

最佳答案

来自答案https://stackoverflow.com/a/5891326/4353712 :

String name = new Object(){}.getClass().getEnclosingMethod().getName();

但是,如答案中所述,每次使用时都会生成一个新的 .class 文件。

关于java - 如何在编译时获取方法名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28552248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com