java - 为什么必须在构造函数完成之前初始化最终变量?

标签 java

为什么必须在构造函数完成之前初始化最终变量?

public class Ex
{
  final int q;
}

当我编译这段代码时,我得到这样的错误

err: 变量 q 可能没有被初始化

最佳答案

官方的原因是它是由Java Language Specification 8.3.1.2 定义的。 :

A blank final instance variable must be definitely assigned at the end of every constructor of the class in which it is declared; otherwise a compile-time error occurs.

空白 final 是一个 final 变量,其声明缺少初始化程序(即您所描述的)。

关于java - 为什么必须在构造函数完成之前初始化最终变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11345061/

相关文章:

java - java - 如何使用gradle生成gRPC服务并重用java中已有的DTO?

JAVA 检查字符串的特定格式?

java - 使用Java ReadWriteLock同步缓存数据——是否将状态变量标记为 volatile ?

java - 理解 JViewPorts 时遇到一些困难

java - 尝试在 Java 中使用 MouseListeners 绘制矩形会导致程序崩溃并且不会生成异常

java - 是否可以只运行一个测试类(利用 PowerMock 和 Mockito)?

Java - 因内存不足错误而关闭

java - 通过 GUI 上的按钮在文本字段中输入数字

java - 在 AWS EC2 上配置 Tomcat8?

Windows 上的 JavaFX GUI 线程和锁定屏幕