我正在查看代码Java Builder Pattern。除了下面的代码,其他所有东西都很好:

public static void main(String[] args) {
                NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8)
                                .calories(100).sodium(35).carbohydrate(27).build();
        }


NutritionFacts构造函数是私有的,而Builder内部类是静态的。因此我们可以使用NutritionFacts.Builder访问此类,但是为什么它使用诸如new NutritionFacts.Builder(240, 8)之类的新关键字呢?

最佳答案

new NutritionFacts.Builder()创建一个Builder类的新实例,而不是NutritionFacts,因此NutritionFacts的构造函数是无关紧要的(可以是私有,受保护,公共,包级)
Builder是在NutritionFacts内部定义的静态类,因此您无需NutritionFacts实例即可创建Builder类的新实例,并且Builder可以调用其顶级类的任何构造函数(私有,受保护,公共,套餐级别)

关于java - 为什么构建器模式的构造函数是私有(private)的,但为什么仍使用new关键字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20728847/

10-10 15:53