替代在Java中声明全局变量

时间:2014-06-12 02:21:47

标签: java class scope constants global

阅读global-variables-in-java后,我发现不建议申报全球  变量。但是,如果我想声明所有类中所有方法都查看的常量变量,那么更好的方法是什么。如何制作这些变量'范围全球?怎么以及为什么,谢谢!

1 个答案:

答案 0 :(得分:3)

  

如果我想声明所有类中所有方法都查看的常量变量

如果那些是真正的常量,那么public static final字段就完全可以了。

这是什么类型的数据?是否需要外部配置(在运行时或构建时)?是否需要在应用程序启动时计算?该计算是否需要可能不可用或缓慢的外部资源(如文件或网络)?

  

嗯,变量指示状态,处于不同的绘制状态(绘制,擦除......)。

我不确定我的理解是什么意思,但也许您想要定义enum

  

我不想每次都传递大量参数

这是使用全局变量的一个不好的论据。

也许你想在持有者对象中组合多个参数?

或者有方法的有状态对象(与采用许多参数的无状态函数相反)。

  

但我仍然需要new一个包含这些常量的类。

没有。你可以做到

 public final class MyConstants{

       public static final String MY_OAUTH_KEY = "ABCDEFGH";

       // maybe this should come from pom.xml 
       public static final String APP_VERSION = "0.0.1";

 }

然后从代码中的任何位置使用它

 System.out.format("You are running version %s%n", MyConstants.APP_VERSION);