我的理解是 Java 编译器不会在输出的 .class 文件中包含字节码中的注释。
但是我有代码:
InputStream stream = getClassLoader().getResourceAsStream(classAsPath);
byte[] classBytes = IOUtils.toByteArray(stream);
我为我的 java 类运行它,向 java 代码添加注释,然后重新运行它。我看到 classBytes 与添加的评论不同
请您参考如下方法:
注释不包含在类文件中。但是,编译器默认包含一些用于调试目的的元数据,其中包括行号。如果您的评论跨越一行或多行,那显然会改变所有内容的行号,因此生成的类文件也会改变。
您可以将 -g:none
传递给 javac
以避免包含行号和其他可选元数据。