gpt4 book ai didi

java - 非静态内部类中的静态变量

转载 作者:搜寻专家 更新时间:2023-11-01 01:38:23 25 4
gpt4 key购买 nike

首先我想问一下Why does Java prohibit static fields in inner classes? ,但问题已经存在。 Bozho 的回答消除了我给出的需要它们 (serialVersionUID) 的原因。不过,我还是很好奇:

静态字段是只在源代码中禁止还是在类文件中也禁止?

顺便说一句,还有一个令人信服的理由禁止这样做。在 C 中,甚至在函数内部也允许使用静态变量。它们的生命周期与任何其他静态变量相同,只是它们的可见性不同。这同样适用于 Java。

最佳答案

内部类可以定义静态字段:

Inner classes may not declare static members, unless they are compile-time constant fields (§15.28).

因此您可以定义一个序列版本 ID。

当静态字段不是常量时,那么它是合乎逻辑的不允许 - 静态字段不需要类的实例 - 它们是每个类的,而内部类需要拥有类的实例 - 如果没有它们就不能存在一个实例。虽然可以将静态字段定义为内部类,就好像它们在所属类中一样,但这会更加困惑。

关于java - 非静态内部类中的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4976871/

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