访问资源文件时代码位置的优点/缺点

时间:2016-11-10 13:00:30

标签: java constructor attributes

以下是我在访问资源文件时看到的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个资源被访问,我也不希望开销差异是可测量的。

1 个答案:

答案 0 :(得分:1)

您的选项2和3生成相同的字节码。所以差异只是美学。