使用全局变量

Iri*_*ina 5 java variables

为什么当我阅读其他代码时,我经常看到广泛使用"全局变量"?

例如在Java代码中:

public class SomeClass {
   Button btn1;
   private void someMethod() {
       btn = new Button();
   }
}
Run Code Online (Sandbox Code Playgroud)

btn1被声明为"全局"和"方便"变量,可用作整个班级的轻松访问.但是当它上面没有修饰符时,它默认为Java中的默认访问.

这可能是安全隐患吗?如果他们只计划在一个特定的类中使用它们,为什么不立即用私有修饰符声明它们呢?

Fel*_*ing 5

它不是全局变量(Java中是否存在这样的东西?我想它取决于一个人对全局的定义).它仍然是一个集体成员.

默认可见性是package-private,因此该变量不是公共的,但可以由同一个包中的其他类访问.

通常情况下,应该争取"最佳"数据封装,但可能存在适当的用例.


Ara*_*ram 3

  1. btn1 不是全局变量。它是类的实例变量
  2. 如果未指定访问修饰符,则默认为“包”级别访问,即 btn1 可供与 SomeClass 属于同一包的所有类访问
  3. 如果 SomeClass 只是一个数据持有者并且不可变(没有设置器等),那么这是完全可以的。
  4. 当涉及到实例变量时,尽可能多地限制总是更好。

  • 我完全不同意 4。我认为最好对变量尽可能进行限制:通常将它们设置为私有,如果你*可以*将它们设置为“final”,那么就这样做。 (3认同)