【问题标题】:The blank final field name may not have been initialized error空白的最终字段名称可能尚未初始化错误
【发布时间】:2017-12-01 14:12:39
【问题描述】:

下面的代码在line 1给出了下面提到的编译错误

空白的最终字段名称可能尚未初始化

我的问题是为什么会出现这个错误,因为我已经在其构造函数中初始化了字段。

    public class Test1 {
    private final String name;

    public Test1() {
        name = "abc";
    }

    @SuppressWarnings("rawtypes")
    private final Function fs = n -> {
        System.out.println(this.name);// Line 1
        return n;

    };

    public static void main(String[] args) {
        new Test1();
    }
}

【问题讨论】:

  • 你已经得到了最后的字段,但没有设置它
  • 错误实际上是说“第 1 行”吗?
  • @SteveSmith--我提到过这个吗???我在第 1 行说
  • 我只是澄清一下,您遇到的问题是您认为自己遇到的问题,而不是其他问题,因为您的代码表明问题实际上在第 10 行(大约)。

标签: java


【解决方案1】:

在对象创建期间,实例初始化程序(即对实例变量和初始化块的赋值)在构造函数运行之前执行,因此,它们需要在那时初始化值。以下应该工作:

public class Test1 {
    private final String name;

    public Test1() {
        name = "abc";
        fs = n -> {
            System.out.println(this.name);// Line 1
            return n;

        };
    }

    @SuppressWarnings("rawtypes")
    private final Function fs;

    public static void main(String[] args) {
        new Test1();
    }
}

【讨论】:

    猜你喜欢
    • 2017-06-05
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多