gpt4 book ai didi

java - 从静态初始值设定项初始化静态最终字段

转载 作者:搜寻专家 更新时间:2023-10-31 19:54:59 26 4
gpt4 key购买 nike

为什么不能使用声明类作为限定符(以静态方式)从相应的静态初始值设定项访问静态最终字段?

起初,我以为这是一个 Eclipse 错误:

Eclipse bug?

我还缺乏一些知识,因为静态初始化器不是我的日常工作。但是你瞧,这在没有类限定符的情况下如预期的那样有效:

Lack of knowledge?

为了完成我的测试系列,我在 bash 中试了一下:

Damn!

导致相同的结果。

这引出了最后一个问题:

从静态初始化程序 block 访问静态最终字段时,是否有任何理由禁止类限定符?因为声明类之前没有初始化?

最佳答案

实际上,您可以从静态初始值设定项初始化静态字段。

但我认为(我不确定),您遇到了另一个问题。这里的问题是您(根据编译器)试图分配一个 final 字段。但是,您的真正意图不是分配它。您正在尝试初始化它。但是编译器没有得到这个。

当你调用像 Test.I 这样的东西时,编译器会认为你正在尝试修改一个静态变量,它可能之前已经初始化过(即来自静态初始化器)。编译器没那么聪明看到您实际上正在初始化您的变量,它只是解释您正在从一个类中分配一个静态变量,无论是 测试 Foo

但是,如果您在没有类限定符 的情况下调用它,编译器会知道您正在尝试修改您自己的静态变量,并且是在静态初始化程序中,因此该操作对于 < strong>final 字段。

拜托,我希望我说得足够清楚,请注意,我不确定这种行为。

关于java - 从静态初始值设定项初始化静态最终字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25284726/

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