我正在使用小程序在线测试Web项目。我想声明一个int
类型的变量,它跟踪正确答案的数量。那么需要声明哪个变量以便可以在所有帧中访问该变量?在Java中声明全局变量
回答
正如其他人所说,你可以使用public static
声明一个全局变量:
public class MyClass {
public static int globallyVisibleInt = ...;
// or
private static int visibleThroughAccessors = ...;
public static void messWithGlobalState(int newValue) {
visibleThroughAccessors = newValue;
}
public static int seeGlobalState() {
return visibleThroughAccessors;
}
}
然后访问和使用这个变量,任何其他代码将仅仅需要导入这个类:
// this code is inside another class and package
MyClass.globallyVisibleInt++;
// or
MyClass.messWithGlobalState(14);
但是,这个全局变量的使用一般是不被接受的。 OOP为您提供了许多用于处理问题的工具,并且您可能不需要针对此特定情况的全局变量。
Here's关于避免全局变量 - 为什么和如何。讨论:
与所有HeuristicRules一样,这不是一个适用于100%的时间的规则。当代码不使用全局变量时,代码通常更清晰易于维护,但也有例外。它与GotoConsideredHarmful在精神上类似,尽管使用全局变量不太可能让你成为一个无情的黑客。
为什么全局变量应尽可能避免不必要的:
- 非本地
- 没有访问控制或约束检查
- 隐耦合
- 并发问题
- 测试和禁闭
替代全局变量:
- ContextObject
- 有状态的过程
- Singleton模式
- 隐藏全局
@Lion - 我不确定你的建议。 –
java中没有全局变量。您可以使用公共静态访问器在某些类或私有静态字段中声明公共静态字段
我知道java中没有全局变量。将声明它是静态的给我们在相同包中的不同框架中访问它的自由 –
在OOP中没有全局变量,但可以声明公共静态变量。但这不是一个好习惯!你应该调查如何处理你的情况,并找到另一种方式。
当然在OOP中有全局变量。 –
OOP没有全局变量,因为它不是一种语言。甚至Java(例如)在C/FORTRAN意义上也没有全局变量。在某些时候静力学必须由封闭类的名称限定。一个C或FORTRAN全球化是真正的全球化,这是使它们变得危险的事情之一。 –
- 1. 全局变量声明
- 2. 在ActionScript中声明全局变量?
- 3. 在yacc中声明全局变量
- 4. 在coffescript中声明全局变量
- 5. 在全局变量中声明查询
- 6. 在Swift中声明全局变量
- 7. 全局变量在android中的声明
- 8. 在vb中声明全局变量
- 9. 哪一个更好,在类中声明全局变量或在Java类中声明局部变量?
- 10. proc声明中的Tcl全局变量
- 11. 声明Button1_Click中的全局变量
- 12. 在全局头文件中声明一个全局变量?
- 13. 声明作为全局变量在类中创建的变量
- 14. Python类正在更改全局变量而未声明全局
- 15. 全局变量多重声明
- 16. Oracle触发器:声明全局变量
- 17. 声明和初始化全局变量
- 18. JavaScript;我如何声明变量全局?
- 19. 无法用TypeScript声明全局变量
- 20. 如何声明全局变量
- 21. 如何声明全局变量?
- 22. 声明中的Java小脚本的全局变量
- 23. 私人与fileprivate在Swift3中声明全局变量/常量?
- 24. 在python中声明一个函数中的全局变量
- 25. Java声明变量
- 26. Java变量声明
- 27. java变量声明
- 28. PHP声明全局变量和会话变量
- 29. 声明的全局变量在功能里面没有改变
- 30. SWIG不会在wrap文件中声明全局变量
怎么样打造一个类只有所有的参数?并将其用作/作为参考? – deadfish