【发布时间】:2017-09-13 15:09:22
【问题描述】:
假设我在文件 A.java 中定义了一个常量 int:
public final static int CONSTAN_VALUE_IN_A = 0;
当我在另一个文件 B.java 中使用这个值时:
int fooBValue = A.CONSTAN_VALUE_IN_A;
在我编译我的项目后,在 B.class 中,我有:
fooBValue = 0
我想知道当我只有 B.class 文件而没有源代码时,我是否可以得到值“0”的来源(A.java)。 听说用java8编译时,通过读取B.class中的常量池,可以知道B.java使用了A.java中的一些常量值。 但我不太确定这一点或如何通过读取常量池来获取常量来自的实际类。
【问题讨论】:
-
I want to know if I can get where the value "0" come from你到底是什么意思? -
值是一个值,它不能“来自”。对于引用类型变量来说,有一种说法是相同的值,但不是在这种情况下。
-
@procrastinator "来自" 表示这个常量值的定义位置。
-
@Andremoniy 是的,有点像参考,我只想知道当我阅读 B.class 文件时,我怎么知道值 0“来自”A.class。原谅我的表达方式。
-
@Raymond 你不是自己定义的吗?因为你的问题是这样
Let's say I defined a constant int in file A.java。
标签: java java-8 jvm inline java-bytecode-asm