java - The blank final field name may not have been initialized 错误

标签 java

以下代码在第 1 行

中给出了下面提到的编译错误

The blank final field name may not have been initialized

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

    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();
    }
}

最佳答案

在对象创建过程中,实例初始化器(即对实例变量和初始化 block 的赋值)在构造函数运行之前执行,因此,它们需要在那时初始化值。以下应该有效:

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();
    }
}

关于java - The blank final field name may not have been initialized 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44798657/

相关文章:

java - 使用流程命令通过Spring MVC执行hadoop jar

java - 在字节数组上进行右位旋转/循环移位的最快方法是什么

java.lang.NoClassDefFoundError - 类存在除外

java - 我将如何使用 NSTask 运行 .sh 文件并获取其输出?

Java,用什么代替PrintStream来获取异常?

java - Windows-1252 编码 - 显示不正确的字符

java - 查找 t 测试用例中 number 的除数个数

java - Java 中的 UTF-8 到 ISO-8859-1 映射/无损转换库

java - 这 ? (三路)运算符(operator)

java - 没有事务的 JTA 数据源