作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
通过构造私有(private)构造函数,我们可以避免从外部任何地方实例化类。通过使类成为最终类,其他类都无法扩展它。为什么 Util 类必须有 private
构造函数和 final
类?
最佳答案
从功能的角度或 Java 复杂性或运行时的角度来看,这不是强制要求。然而,它的编码标准被更广泛的社区所接受。甚至很多静态代码审查工具,如 checkstyle和许多其他人检查这些类是否遵循了这个约定。
为什么遵循这个约定,已经在其他答案中解释过,甚至 OP 也涵盖了这一点。
我想进一步解释一下,大多数实用程序类都有独立于对象实例的方法/函数。这些是聚合函数的一种。因为它们仅依赖于返回值的参数,而不与实用程序类的类变量相关联。因此,大多数这些函数/方法都保持静态。因此,实用程序类是具有所有静态方法的理想类。因此,任何调用这些方法的程序员都不需要实例化此类。然而,一些机器人编码器(可能经验或兴趣较少)将倾向于在调用其方法之前创建他们认为需要的对象。为了避免创建对象,我们有 3 个选项:-
现在,如果有人想为这些实用程序类的某些功能添加新方法,他不需要扩展它,他可以添加新方法,因为每个方法都是独立的,没有机会破坏其他功能。因此,无需覆盖它。而且您也不会实例化,因此需要对其进行子类化。最好将其标记为最终版本。
综上所述,创建实用类的对象没有意义。因此构造函数应该是私有(private)的。而且您永远不想覆盖它,因此将其标记为最终。
关于java - 是否强制实用程序类应该是最终的和私有(private)的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32375149/
我是一名优秀的程序员,十分优秀!