【问题标题】:Initialize final variable in constructor在构造函数中初始化最终变量
【发布时间】:2014-08-23 13:15:01
【问题描述】:

我正在尝试在我的类的构造函数中初始化一个private final 变量。我发现这个线程解释了如何做到这一点(Initialize a static final field in the constructor),但 eclipse 似乎不喜欢我的代码。我想知道是否有人可以阐明我可能做错了什么。

public class A {
  final private String myString;

  public A() {
    myString = "content";
  }
}

有了这段代码,我得到了:

空白的 final 字段 myString 可能尚未初始化

这似乎与我链接到的线程中的示例非常相似。

感谢您的帮助!

【问题讨论】:

  • eclipse 给出了什么错误?我将您的示例剪切并粘贴到 IntelliJ 中,它很高兴。
  • 它在我上面的帖子中给出了第二个代码块。我正在使用 4.4.0 和 Java 7,但运行它时的实际错误是:线程“main”java.lang.Error 中的异常:未解决的编译问题:空白的最终字段 myString 可能尚未在包中初始化。 (A.java:31) 在 package.Test.main(Test.java:5) 初始化
  • 顺便说一句,我建议使用带有下划线的大写约定来命名常量LIKE_THIS
  • 在文件上简单地调用javac是否有效?这是一个远射。
  • @user3780616 我怀疑上面的代码会产生这个错误。请提供完整示例(您的 A 类没有第 31 行)

标签: java constructor final


【解决方案1】:

您的代码完全有效。这可能是由于:

  1. IDE 设置错误
  2. 已损坏或替代的 javac 编译器。

重新下载您的 IDE,您可能想要下载它的最新版本并执行全新安装。您也可以尝试重新下载安装JDK(最好是最新版本)。

只是一个小提示。在 Java 中,有一个约定是变量可见性修饰符首先出现。所以不要使用final private,而是学习写private final。

【讨论】:

  • 重新安装了 JDK 和 Eclipse,一切正常。不知道为什么,但是嘿,它有效 :) 感谢大家的帮助!
猜你喜欢
  • 1970-01-01
  • 2013-01-03
  • 1970-01-01
  • 1970-01-01
  • 2020-09-27
  • 2015-02-19
  • 2014-08-26
  • 1970-01-01
  • 2012-04-22
相关资源
最近更新 更多