使用该对象时,是否会一次又一次调用静态最终对象的初始化方法?

时间:2018-07-08 18:11:34

标签: java object static final public

我有一个图书馆,整个应用程序中我只需要一个配置。 我通过Helper类中对库的生成器的公共静态最终引用来调用该库中的方法。

从示意图上看,它是这样的:

public class Helper{
       private static final Pattern a = ... ;
       private static final Pattern b = ... ;
       ....
       public static final Library.Renderer RENDERER = Library.getBuilder().
                        .add(a)      // setting the configuration 
                        .add(b)      // of the renderer
                        ...
                        .build();
}

然后,我从这样的其他地方调用该库中的方法

 String processedText = Helper.RENDERER.render(rawText);

这是否意味着每次我调用静态RENDERER时,它都会一次又一次地添加和构建方法的所有过程?

注意:这与静态变量无关。它涉及静态对象初始化中包含的方法。因此,问题是static final RENDERER = ....是指添加和构建过程,还是该添加和构建过程的最终结果。

1 个答案:

答案 0 :(得分:1)

不,这仅被调用一次。 测试文件:

public static void main(String[] args) {
    int verify = Static.var;
    int verify2 = Static.var;
    System.out.println("verify:"+verify);
    System.out.println("Verify2:"+verify2);
}

和静态类:

public class Static {

    public static int var = returnCount();

    public static int count = 0;
    public static int returnCount() {
        count = count + 1;
        return count;
   }
}

结果:

verify:1 Verify2:1