gpt4 book ai didi

java - 使用反射,我可以确定 Java static final 字段是否将被内联吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:17:59 25 4
gpt4 key购买 nike

有什么方法可以使用反射来确定静态最终字段是否具有“=”值(以便该值在访问时内联)或者它的值是否由静态初始值设定项分配?如果该字段确实有一个值,是否有任何方法可以在不使用 Field.get 方法的情况下检索该值(从而导致执行静态初始化程序)?

最佳答案

只有当它是一个编译时常量时,该字段才会被“内联”——参见 JLS 中的冗长定义。 .

所以仅仅在声明的时候赋值是不够的。这不是编译时常量,尽管是一个有效的声明:

static final int INT_CONST = compute();

static int compute() {
return 5;
}

仅通过反射您无法确定该字段是如何初始化的。

要访问类字段的任何值,需要首先加载该类,因此您无法阻止静态初始化程序的运行。

关于java - 使用反射,我可以确定 Java static final 字段是否将被内联吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32499354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com