以下是我在访问资源文件时看到的3个选项。 选项1可能是最不推荐的,因为可能存在例外,因此问题确实与选项2或3有关,哪个是首选或推荐的实现。
选项1 - 在属性区域中完成。非常通用。没有捕获潜在的异常。
class MyClass
{
static ResourceBundle bundle = Resource.getBundle("MyFile");
float value1 = Float.parseFloat(bundle.getString("myValue1"));
float value2 = Float.parseFloat(bundle.getString("myValue2"));
}
选项2 - 访问构造函数中的资源。由于这些值不会是动态的,因此每次实例化该类时都会访问它们,因为这个类是一个使用频繁的项目。
class MyClass
{
static ResourceBundle bundle = Resource.getBundle("MyFile");
float value1;
float value2;
public MyClass()
{
try
{
value1; = Float.parseFloat(bundle.getString("myValue1"));
value2 = Float.parseFloat(bundle.getString("myValue2"));
}catch(Exception e)
{
//Do something
}
}
}
选项3 - 类的属性部分中的代码。我喜欢这个,因为如果类已经在内存中,它只被访问一次,但由于所有属性都倾向于在类的顶部,它确实使得代码看起来都是使用try / catch和额外的代码混乱。
class MyClass
{
static ResourceBundle bundle = Resource.getBundle("MyFile");
float value1;
float value2;
{
try
{
value1; = Float.parseFloat(bundle.getString("myValue1"));
value2 = Float.parseFloat(bundle.getString("myValue2"));
}catch(Exception e)
{
//Do something
}
}
}
看起来它更像是一个偏好而不是其他任何东西,因为即使有20-30个资源被访问,我也不希望开销差异是可测量的。
答案 0 :(得分:1)
您的选项2和3生成相同的字节码。所以差异只是美学。