在Java中获取变量的名称

4

在Java中,是否有可能在运行时获取变量的名称?

可能的用例:在断言中。例如给定一个断言:

assert percval >= 0 && percval <= 100 : "percval out of range: " + percval;

根据您使用的集成开发环境(IDE),如果您进行代码重构,更改变量名,它可能不会自动更改字符串中的出现次数。可能的结果:

assert percentage >= 0 && percentage <= 100 : "percval out of range: " + percentage;

希望有这样的东西,类似于:

assert percval >= 0 && percval <= 100 : nameOf(percval) + " out of range: " + percval;

可以的吗?

3
不,这在Java中不可能。反射可以获取成员的名称,但无法获取局部变量。 - f1sh
我认为你可以通过查看https://dev59.com/mHRB5IYBdhLWcg3wCjYV来实现这一点。 - screab
可能是如何打印保存对象的变量名?的重复问题。 - alain.janinm
我的回答解决了你的问题吗?我很好奇,因为我自己没有使用过它,想知道是否可能使用我提供的链接? - Ad Infinitum
我也没有尝试过,因为该项目仅在Java 7上开发。如果它有效,那就是我正在寻找的。当我转换到Java 8时,我稍后会去尝试它。我不知道这将何时发生。 - Matthias Ronge
1个回答

2
我不确定在Java 8之前是否可能,但是使用Java 8,您可以按照以下链接:following link来实现您想要做的事情。
这的总结如下:
通过核心反射提供一种机制,以便轻松可靠地在运行时检索方法和构造函数的参数名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接