我有属性文件app.properties
,它有50种不同的属性。
我正在使用
Properties prop = new Properties();
prop.load("app.properties");
System.out.prinltn(prop.getProperty("APPNAME"));
实际上,我想摆脱像prop.getProperty("APPNAME")
这样的访问属性。在java中有没有最好的方法来访问属性。
我可以在java类中将所有变量声明为静态。
static String appName = prop.getProperty("APPNAME");
还有其他最好的方法吗?
答案 0 :(得分:3)
我可以建议两种方法: 1.定义一个实用程序方法,它将String作为参数并从属性中返回值。
例如:
public static String GetValue(String key) {
return properties.getProperty(key);
}
现在你可以在来电者身上使用这个功能了
String value = GetValue("key"); // properties.getProperty("key");
定义上面的方法,另外创建一个类Called Constants(或适合的东西)。在此将所有密钥定义为静态最终变量。
公共类常量 { public static final String KEY =“key”; public static final String KEY2 =“key2”; }
现在使用这些变量而不是字符串来调用获取值:
String value = GetValue(KEY); //GetValue("key");
如果您只选择选项1,那么您的代码将变得更具可读性。但我会推荐第二个选项,它使您的代码可读并且可维护。
您可以轻松执行以下操作:
答案 1 :(得分:0)
您可以使用" resourceBundle"包装为
首先导入resourceBundle API:
import java.util.ResourceBundle;
创建属性文件的实例:
private static ResourceBundle resource = ResourceBundle.getBundle("app");
现在您可以获取该属性的值:
String appName = resource.getString("APPNAME");
答案 2 :(得分:0)
IMO,您使用静态变量来保存值的方法是最好的。以下结构是我在项目中使用相同功能的结构。
package snippet;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
public class Constants {
public static final String APPNAME;
public static final String VERSION;
public static final int DEFAULT_TIMEOUT;
static {
Properties p = new Properties();
try {
p.load(new FileInputStream("constants.properties"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
APPNAME = p.getProperty("APPNAME");
VERSION = p.getProperty("VERSION");
DEFAULT_TIMEOUT = Integer.parseInt(p.getProperty("DEFAULT_TIMEOUT"));
}
}
当然,有NumberFormatException
等检查。