我有一个问题,在尝试几个代码片段时我遇到了一个代码
class O
{
final int i;
O()
{
i=10;
}
O(int j)// error here as THE BLANK FINAL FIELD i IS NOT INITIALIZED
{
j=20;
System.out.println(j);
}
}
class Manager3
{
public static void main(final String[] args)
{
O n1=new O();
//O n2=new O(10);
//n1.i=20;
//System.out.println(j1.i);
}
}
但是如果我用参数评论构造函数,我不会得到任何错误。
我的问题是为什么当我将构造函数都放入代码时会出现此编译时错误,以及为什么在删除参数化构造函数时不会出现任何错误。
我知道我们必须初始化我的最终变量,但我在构造函数中初始化它,因此如果我编写这段代码:-
class O
{
final int i;
O()
{
i=10;
}
}
class Manager3
{
public static void main(final String[] args)
{
O n1=new O();
}
}
一切正常,代码正在编译。
我的问题是如果我引入另一个构造函数有什么问题。甚至错误也出现在我编写参数化缺点的那一行。
我对 JAVA 有所了解,但我对这段代码感到困惑。