gpt4 book ai didi

java - 为什么有些类限制直接实例化?

转载 作者:行者123 更新时间:2023-12-03 06:20:38 24 4
gpt4 key购买 nike

我遇到过各种不允许直接创建其实例的类。相反,我们必须从其他类的静态方法或其自己的静态方法创建它们的实例。例如:

B b = A.getB();

B b = B.getInstance();

这背后的原因是什么?

为什么他们不允许直接创建实例,如下所示:

B b = new B();

最佳答案

一些类想要控制它们实例化的方式,从而保护它们的构造函数不被公共(public)使用。使用像 getInstance 这样的静态工厂方法可以让他们在自己的代码中保持控制。

有一百万个理由想要这样做。

编辑:为了解决您的评论,这不能在构造函数内完成,因为new运算符将总是创建一个新实例(除非抛出异常)。当构造函数被调用时,构造函数中的代码来控制是否实例化对象已经为时已晚。

关于java - 为什么有些类限制直接实例化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2124222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com