在javac中禁用StringBuilder优化

在javac中禁用StringBuilder优化,java,optimization,javac,Java,Optimization,Javac,在Java中使用普通字符串连接时,javac将对此进行优化,可以使用StringBuilder(或Java5之前的StringBuffer) 在我的例子中,关闭所有这些功能将非常有帮助,只需让字符串连接使用string上的bog标准“append”方法即可。这个优化是完全“嵌入”到javac中的,还是有办法禁用它呢?看看它与eclipse相关,但是如果您使用eclipse,您可能会发现一些与优化选项相关的配置,如未使用的局部变量和co,希望您能找到一些有用的东西 或者,它可以帮助您获取Java类

在Java中使用普通字符串连接时,javac将对此进行优化,可以使用
StringBuilder
(或Java5之前的StringBuffer)

在我的例子中,关闭所有这些功能将非常有帮助,只需让字符串连接使用
string
上的bog标准“append”方法即可。这个优化是完全“嵌入”到javac中的,还是有办法禁用它呢?

看看它与eclipse相关,但是如果您使用eclipse,您可能会发现一些与优化选项相关的配置,如未使用的局部变量和co,希望您能找到一些有用的东西


或者,它可以帮助您获取Java类的ASCII描述,这些描述使用Java虚拟机指令集,以类似于汇编程序的简单语法编写。它将它们转换为二进制Java类文件,适合Java运行时系统加载。

我不是Java专家,但在1793行的文件中,它似乎是用Java语言硬编码的。

为什么要禁用它?你指的是哪种“优化”?或者换一种说法:你希望字符串串联产生什么样的字节码?@SimonC我正在编写一个工具,根据JDI事件创建学生Java代码的可视化。当StringBuilder的可视化出现时,他们实际上没有使用任何,这可能会让人困惑。@berry120但是如果你有附加的源代码,你就不能从源代码中找出它是真正的StringBuilder用法还是普通的字符串concat并据此采取行动吗?@SpaceTrucker是的,它可以。但这涉及到对源代码的解析,因此绝对不是一件小事。这可能是我现在要考虑的选项,但是如果javac本身存在这样一个选项,那么我的生活就会轻松得多!谢谢你的回答——不幸的是,我目前只依赖于标准JDK附带的标准javac。可能在某个时候不得不改变这一点,但我会尽量拖延!谢谢,这正是我想在这里做的-看起来从那以后肯定没有办法了。还有其他选择!我既不是
javac
专家,但既然assylias找到了问题的根源,您可以尝试修补
Gen.java
,制作自己的编译器版本。我不知道
Gen
的嵌入深度有多深,但是您可以扩展这个类,或者只是简单地修改和编译一个新的
Gen.class
,并在适当的系统jar中进行替换。