【发布时间】:2020-02-29 01:14:19
【问题描述】:
在 Java 9 中,Oracle 改进了字符串连接。现在"" + someBoolean 变成invokedynamic,StringConcatFabric.makeConcat 作为引导方法。该结构在运行时生成连接您的字符串的类。我想禁用此行为并回退到普通的旧字符串生成器。
所以我认为 javac 有做我想做的事情的标志。但我找不到它。
【问题讨论】:
-
为什么要关闭它?
-
因为我必须从我们的 java fork 中删除所有运行时类生成。这是因为我们的反作弊。我们真的没有其他办法了。
-
我猜你指的是这个变化:jep280
-
@ЮрийБаринов 所以你还删除了 JDK 内部对 lambda 表达式、方法引用、反射和
Proxy的所有使用?不允许访问注释?甚至 XML 解析器/XSLT 处理器也使用运行时类生成,谁知道还有什么用它呢。 -
我在编译时生成代理和 Lambda。所以我们在注释和 lambda 方面没有问题。反射仅在 5 次调用方法后生成类,所以我只是删除了这个功能。但是我为一些硬编码的方法生成访问器。关于 XML。我们只是不使用 XML 解析器。
标签: java jvm concatenation javac string-concatenation