如果您运行下面的代码片段中,你会得到这样的输出为最后的变量X和Y与Java最终变量播放 - 需要说明 - 代码提供
X = 1 Y = 2
X = 4 Y = 5
从输出中显而易见,最终的变量已被重新分配。 我想知道,如果它违反了Java Final变量的合同。有什么想法吗?
public class FinalVariablesTest {
private final int x;
private final int y;
public FinalVariablesTest() {
this.x = 1;
this.y = 2;
}
public FinalVariablesTest(int xValue, int yValue) {
this.x = xValue;
this.y = yValue;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public static void main(String...strings) {
FinalVariablesTest finalVariablesTest = new FinalVariablesTest();
System.out.println(" X = "+finalVariablesTest.getX() + " Y = "+finalVariablesTest.getY());
finalVariablesTest = new FinalVariablesTest(4,5);
System.out.println(" X = "+finalVariablesTest.getX() + " Y = "+finalVariablesTest.getY());
}
}
在Java中,在类的构造函数中设置了'final'实例变量并在此之后**不能**修改这个值。所以,你不会重新分配任何东西。 –
@格雷格,你显然不明白OOP。 – mre
你不重新分配。您正在创建FinalVariablesTest的两个实例。 X和Y是实例变量。 – km1