我无法得到我们需要一个不可变类的场景.
你有没有遇到过这样的要求?或者你可以给我们任何一个我们应该使用这种模式的真实例子.
我有一个对象:
Object obj = create();
Run Code Online (Sandbox Code Playgroud)
...我需要设置此Object的一些属性:
obj.setParam("7696969", 0x506);
Run Code Online (Sandbox Code Playgroud)
在此过程之后,我需要确保obj无法修改.
有没有办法设置obj为final不创建另一个final Object副本obj?
标题说明了一切.
我在每个派生类中都有一个独特的颜色,它被声明为静态.
就像这样:
class CandyBlue extends Candy
{
public static final String color = "blue";
}
class CandyRed extends Candy
{
public static final String color = "red";
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个类型为Candy的物体S.
class CandyFrenzy
{
Candy candies[][];
public CandyFrenzy()
{
candies = new Candy[4][4];
candies[0][0] = new CandyBlue();
candies[0][1] = new CandyRed();
....
}
public static void main(String args[])
{
CandyFrenzy candyFrenzy = new CandyFrenzy();
Candy candy;
for(int a=0; a<4; a++)
{
for(int b=0; b<4; b++)
{
candy = candies[a][b];
//print the …Run Code Online (Sandbox Code Playgroud) 最终变量.我已经阅读了本网站上可以找到的所有内容,以及其他内容,我几乎了解它们,但我仍然有点困惑.
所以,我知道为什么我们将变量声明为final的官方答案:它锁定变量并阻止它被重新初始化.我的问题是这些:
如果无法重新初始化,它的价值仍然可以改变吗?例如:
final int a = 1;
a = a + 1;
Run Code Online (Sandbox Code Playgroud)
这种代码是否仍然有用,或者"final int a"会永久锁定值1吗?
如果int a即使在宣布最终值之后仍然可以改变上述值,那么最终的意义何在?
我想问题2是我最大的问题.我一直看到关于它如何锁定变量的所有这些解释,有些人甚至说他们将大部分变量声明为最终变量,但这样做的动机对我来说没有意义.