是否可以在 Java 或 Kotlin 中以编程方式获取局部变量名称?

Але*_*ков 6 java kotlin

是否可以在 Java 或 Kotlin 中以编程方式获取局部变量名称?

例如,这段代码

public void printOneTwo() {
    int one = 1;
    int two = 2;

    printLocalVariables(one, two);
}

private void printLocalVariables(Objects... variables) {
    //code
}

//result: "one, two"
Run Code Online (Sandbox Code Playgroud)

我需要将变量转换one为字符串"one"

Raf*_*ter 4

理论上是有可能的。

您可以使用像 ASM 这样的字节码解析器从声明类的类文件中提取方法的局部变量表。该表包含所有局部变量的名称以及它们的有效性的偏移量,以识别声明顺序。

但请注意,此属性是可选的。编译器可以省略添加此调试信息。