全局字符串变量的Java声明

时间:2014-02-20 19:01:15

标签: java global-variables

我正在编写服务器程序和客户端程序。我将服务器代码文件命名为server.java。客户端从不同的计算机运行。客户端可以做的一件事就是将文件上传到服务器。我希望服务器将上传的文件存储在与server.java程序文件位于同一目录的文件夹中。所以我使用了以下代码:

String server_files_location = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();

这确实奏效了。但是我必须在我写的所有不同类中分别声明这个变量。我想让它成为一个全局字符串变量,这样我每次添加新的类或方法时都不必声明它。

所以在程序开始时我尝试了:

public static String server_files_location = getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); 

这给我一个错误Cannot make a static reference to the non-static method getClass() from the type Object

我怎样才能让这个变量全局可访问?

2 个答案:

答案 0 :(得分:3)

使用您声明变量的类中的类文字。

public static String server_files_location =
    YourClass.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 

考虑变量final,如果它是一个常数并且不会改变。另外,正常的Java变量命名约定会说以驼峰为例命名变量,例如: serverFilesLocation,或者如果它是常数,则在所有大写字母中,例如SERVER_FILES_LOCATION

答案 1 :(得分:0)

在变量声明中删除static。如果变量和实例都是公共的,那么所有实例都能够访问一个实例的副本。