gpt4 book ai didi

java - 是否强制实用程序类应该是最终的和私有(private)的构造函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:11:48 26 4
gpt4 key购买 nike

通过构造私有(private)构造函数,我们可以避免从外部任何地方实例化类。通过使类成为最终类,其他类都无法扩展它。为什么 Util 类必须有 private 构造函数和 final 类?

最佳答案

从功能的角度或 Java 复杂性或运行时的角度来看,这不是强制要求。然而,它的编码标准被更广泛的社区所接受。甚至很多静态代码审查工具,如 checkstyle和许多其他人检查这些类是否遵循了这个约定。

为什么遵循这个约定,已经在其他答案中解释过,甚至 OP 也涵盖了这一点。

我想进一步解释一下,大多数实用程序类都有独立于对象实例的方法/函数。这些是聚合函数的一种。因为它们仅依赖于返回值的参数,而不与实用程序类的类变量相关联。因此,大多数这些函数/方法都保持静态。因此,实用程序类是具有所有静态方法的理想类。因此,任何调用这些方法的程序员都不需要实例化此类。然而,一些机器人编码器(可能经验或兴趣较少)将倾向于在调用其方法之前创建他们认为需要的对象。为了避免创建对象,我们有 3 个选项:-

  1. 继续教育人们不要实例化它。 (任何理智的人都无法继续这样做。)
  2. 将类标记为抽象类:- 现在机器人编码器不会再创建对象。然而,评论和更广泛的 Java 社区会争辩说,标记抽象意味着你希望有人扩展它。所以,这也不是一个好的选择。
  3. 私有(private)构造函数:- Protected 将再次允许子类创建对象。

现在,如果有人想为这些实用程序类的某些功能添加新方法,他不需要扩展它,他可以添加新方法,因为每个方法都是独立的,没有机会破坏其他功能。因此,无需覆盖它。而且您也不会实例化,因此需要对其进行子类化。最好将其标记为最终版本。

综上所述,创建实用类的对象没有意义。因此构造函数应该是私有(private)的。而且您永远不想覆盖它,因此将其标记为最终。

关于java - 是否强制实用程序类应该是最终的和私有(private)的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32375149/

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