如何在不运行代码的情况下在Intellij Idea中找出静态字符串结果串联?

2022-09-01 17:16:20

代码示例:

public class StringHolder{
    public static final String ONE = "ONE";
    public static final String TWO = "TWO";
    public static final String THREE = "THREE";

    public static void main (String[] args){
        String someVariable = ONE + TWO + THREE;
    }
}

如何从静态常量中计算字符串值?例如,使用Intellij Idea,我可以在调试中运行程序,放置断点,在表达式上按“ctrl + alt + f8”并查看表达式值。那么,是否可以使用静态分析器进行评估,而无需编译代码并运行程序?关键点是从静态常量而不是从函数参数计算的值,因此分析器只需“转到”常量值,将它们连接起来并在弹出窗口中显示值。

当我有一个块和“刚刚初始化”变量时的另一种情况:

{
    final String a = "a";
    final String b = "b"
    final String c = "c"
    String result = a+b+c;
}

附言:你理解我吗?:)


答案 1

使用intellij idea 14很容易:

  1. 只需将光标放在字符串连接上
  2. alt + enter
  3. 选择“将字符串串联文本复制到剪贴板”
  4. 将结果粘贴到某个位置。

答案 2

您可以通过反编译字节码来查看编译时串联的字符串:"ONETWOTHREE"

javap -c StringHolder

并查看第一个任务。

的串联仍将在执行时而不是编译时完成,因此我希望看到使用 or 的代码,并且在不运行代码的情况下不会有该字符串串联的“结果”。first + second + thirdStringBuilderStringBuffer