静态变量问题小记

本文最后更新于:2 年前

今天在公司和前辈讨论了一个代码规范的问题,是关于静态变量的,浅浅地记录一下讨论的结果。

要抱抱

静态变量问题小记

问题描述

对于工具类等含有静态变量的类,其赋值方式最好用那种。

方案有两种:

  1. 使用Class.property = value 直接进行赋值
  2. 使用get、set方法进行值的修改(等同使用Lombok)。

验证代码

验证代码贴一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

/**
* @ClassName Class1
* @Author by septzhang
* @Date 2022/10/24 21:08
* @Description 测试static静态变量
* @Version 1.0
**/
public class Class1 {
public static boolean flag = false;

public boolean getFlag(){
return flag;
}

public void setFlag(boolean flag) {
Class1.flag = flag;
}

public static void main(String[] args) {
Test1 test1 = new Test1();
Test2 test2 = new Test2();

test1.run();
test2.run();
}

}
class Test1{
public void run(){
Class1.flag = true;
Class1 class1 = new Class1();
System.out.println("test1-Class1.flag==" + Class1.flag);
System.out.println("test1- class1.getFlag()==" + class1.getFlag());
System.out.println("test1-Class1.flag == class1.getFlag()==" + Class1.flag == class1.getFlag() + "");
}
}
class Test2{
public void run(){
Class1 class1 = new Class1();
Class1 class2 = new Class1();
class1.setFlag(true);
class2.setFlag(false);
System.out.println("test2-class1.getFlag()==" + class1.getFlag());
System.out.println("test2-class2.getFlag()==" + class2.getFlag());
System.out.println("test2-class2.getFlag() == class2.getFlag()==" + class2.getFlag() == class2.getFlag()+"");
System.out.println("test2-Class1.flag == class1.getFlag()==" + Class1.flag == class1.getFlag() + "");
}
}

结果展示

1
2
3
4
5
6
7
8
9
test1-Class1.flag==true
test1- class1.getFlag()==true
false
test2-class1.getFlag()==false
test2-class2.getFlag()==false
false
false

Process finished with exit code 0

具体原因待整理


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!