有人可以帮助我在至少异常类的上下文中理解无参数构造函数的真实用例。
编辑:
正如大多数人所说,“它有助于在异常类是不言自明的情况下,即NullPonterException
。InterruptedException
” 除了这个用例之外,我们还能想到的任何其他事情。
有些异常是不言自明的,它们的堆栈跟踪是理解它们所必需的。NullPointerException
是一个例子。
通常,如果您要创建具有默认值的对象,则会考虑使用默认构造函数。关于默认构造函数和异常,Paul Bellora 已经给出了一个很好的答案,我完全同意,但不建议使用。原因是,作为程序员,您有责任告知用户他做错了什么,以便他可以增强他的输入或与系统的交互。只显示一个告诉用户“NullPointerException”的对话框就足以作为一个 hello world 示例!如果我实现自定义异常类,我从不提供非参数构造函数。
我看到了默认构造函数在创建需要大量配置属性的复杂对象方面的优势。应用大量重载的构造函数或创建方法可能会非常混乱,也难以维护。使用依赖注入更方便,并且大大简化了对象的配置。一个非常重要的默认构造函数是受保护的默认构造函数。尤其是提供 API 时,您必须防止从外部使用 new 操作创建对象。应限制用户使用工厂实例的创建方法创建 API 项。这是指定正确使用 API 的方法。当然,您不仅会为 API 使用受保护的无参数构造函数。
一个特例是 java.util.Date 类,它的创建时间定义了对象的值。我敢肯定,没有争论的构造器有更多的应用程序示例,但与异常结合的应用程序示例可能是最糟糕的应用程序示例。