gpt4 book ai didi

Java 和最终初始化

转载 作者:行者123 更新时间:2023-12-01 06:46:05 24 4
gpt4 key购买 nike

我正在从 .NET“转换”为 Java。我想知道为什么下面的代码不起作用

class MyClass{
private final int intVar; //ok
private final Paint paint; //error "Variable paint might not have been initialized"

public MyClass(){
intVar = 12;
initializePaint();
}

private void initializePaint(){
paint = new Paint(); //error "cannot assign a variable to final variable"
}

}

最佳答案

您应该在类或构造函数中声明的位置初始化最终字段。

构造函数中允许初始化final字段,因为构造函数在对象创建时只被调用一次。

当您在方法 initializePaint() 中初始化它时,您将收到编译器错误,因为该方法可以多次调用,并且最终变量/字段是常量且无法更改。因为您将多次调用 initializePaint() 方法,多次初始化最终字段,这是错误的。因此编译器会给出错误。

class MyClass{
private final int intVar; //ok
private final Paint paint;// paint = new Paint(); to avoid //error "Variable paint might not have been initialized"

public MyClass(){
intVar = 12;
//initializePaint();
paint = new Paint(); // here initialized And allowed.
}

private void initializePaint(){
paint = new Paint(); //error "cannot assign a variable to final variable"
}
}

关于Java 和最终初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12758781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com