相关疑难解决方法(0)

为什么我们需要不可变的类?

我无法得到我们需要一个不可变类的场景.
你有没有遇到过这样的要求?或者你可以给我们任何一个我们应该使用这种模式的真实例子.

java design-patterns immutability

73
推荐指数
10
解决办法
4万
查看次数

如何在初始化后将Java对象设置为final

我有一个对象:

Object obj = create();
Run Code Online (Sandbox Code Playgroud)

...我需要设置此Object的一些属性:

obj.setParam("7696969", 0x506);
Run Code Online (Sandbox Code Playgroud)

在此过程之后,我需要确保obj无法修改.

有没有办法设置objfinal不创建另一个final Object副本obj

java

2
推荐指数
1
解决办法
2207
查看次数

如何在不使用getter的情况下访问派生类静态成员?

标题说明了一切.

我在每个派生类中都有一个独特的颜色,它被声明为静态.

就像这样:

    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)

java

2
推荐指数
1
解决办法
132
查看次数

试图了解最终变量

最终变量.我已经阅读了本网站上可以找到的所有内容,以及其他内容,我几乎了解它们,但我仍然有点困惑.

所以,我知道为什么我们将变量声明为final的官方答案:它锁定变量并阻止它被重新初始化.我的问题是这些:

  1. 如果无法重新初始化,它的价值仍然可以改变吗?例如:

    final int a = 1;
    a = a + 1;
    
    Run Code Online (Sandbox Code Playgroud)

    这种代码是否仍然有用,或者"final int a"会永久锁定值1吗?

  2. 如果int a即使在宣布最终值之后仍然可以改变上述值,那么最终的意义何在?

我想问题2是我最大的问题.我一直看到关于它如何锁定变量的所有这些解释,有些人甚至说他们将大部分变量声明为最终变量,但这样做的动机对我来说没有意义.

java final

0
推荐指数
1
解决办法
72
查看次数

标签 统计

java ×4

design-patterns ×1

final ×1

immutability ×1