众所周知,Java 编译器会在编译时从其他类中提取常量字段值。生成的类文件不包含此类常量的常量池条目(任何类型)。
问:可以告诉编译器这样做吗?(Oracle JDK 7 会很好)
作为说明,考虑一段
out.println(some.other.class.FOO)
读取 FOO(例如public static final int FOO = 1234
)并输出它的代码。我能够找到println
没有问题的引用,但是常量变成了匿名的sipush 1234
。
对于类级别的依赖关系分析,在这里有透明度会很棒!请注意,我并不是要求在依赖代码中以某种方式出现任何更改的值(请参阅有关该问题的大量其他 SO 问题)...
我正在考虑 javac 的 Java Compiler API 插件,但这听起来有点牵强?有任何想法吗?