java - 在java构造函数中初始化final变量

标签 java data-structures

假设我遇到了这样的情况。

private final A a;
private final B b;
private final C c;
private ClassX(){
  this.c = createCSomehow();
}
public ClassX(A a){
  this();
  this.a = a;
  this.b = null;
}
public ClassX(B b) {
  this();
  this.b = b;
  this.a = null;
}

为什么 Idea 会提示 a 和 b 属性?想法在它们下面划线并说:变量 a 可能尚未初始化。我确信我没有更多的构造函数,并且在每种情况下 a 都会填充一些值。

最佳答案

我真的不知道如何正确回答原因(需要 JLS 调查),但对于如何,应该编译以下内容:

private final A a;
private final B b;
private final C c = createCSomehow();

public Main(A a){
  this.a = a;
  this.b = null;
}

public Main(B b) {
  this.b = b;
  this.a = null;
}

关于java - 在java构造函数中初始化final变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42926666/

相关文章:

algorithm - 为工作选择合适的 STL 容器的标准?

database - GiST 索引到底是如何工作的?

java - 如何将音频(.mp3/.wav 等)数据批量导入 Anki 面板?

java - Android 如何保持方法运行?

java - 我需要下载 jasper reports 专业试用版

c++ - SPOJ上通过TLE的代码优化建议

java - 我需要了解 Haskell 如何表示数据才能编写好的 Haskell 程序吗?

Java ImageIO.write 到类路径?

java - JSON-Lib 和 JDK 1.4 的 NoSuchMethodError

c++ - 检查链表是否回文