gpt4 book ai didi

java - 空白最终字段是否适用于局部变量?

转载 作者:行者123 更新时间:2023-12-01 16:22:09 25 4
gpt4 key购买 nike

Java spec对于 java 8 来说

A blank final is a final variable whose declaration lacks an initializer.

这是否意味着空白的最终字段仅适用于实例和类变量,而不适用于局部变量,因为初始值设定项仅适用于实例和类变量?

最佳答案

Does this mean that blank final fields are only for instance and class variables not for local variable as initializers are only for instance and class variables?

由于初始化器不仅仅适用于实例和类变量,所以答案是否定的。

初始值设定项可以是局部变量声明的一部分。例如

public void method() {
int i = 0; // this declaration has an initializer
...
}

I am asking that whether the term initializer here used in general sense i.e. for any value or for initializer blocks.

在您所指的上下文中,否。它特指作为声明的一部分的初始值设定项。它说:

" ... a final variable whose declaration lacks an initializer."

假设初始化程序稍后发生1(例如,在实例或静态初始化程序 block 中,或者稍后在同一方法 block 或嵌套方法 block 中),那么这是一个空白final.

如果它也是一个字段,那么它是一个空白的最终字段。

<小时/>

最后,以下程序演示了局部变量可以是空白final:

public class Test {     
public static void main(String[] args) {
final int i; // blank final
i = 0;
System.out.println(i);
}
}

它在 Java 11 上编译和运行,并且应该在所有 Java 版本的所有(兼容)实现上编译和运行。

<小时/>

1 - 实际上,JLS 并没有明确禁止完全没有初始化的空白 final 。但是,在使用变量之前必须进行初始化,因此这样的声明是没有意义的。编译器可能会警告您有关未使用的变量。

关于java - 空白最终字段是否适用于局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62241099/

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