当前位置: 首页 > 知识库问答 >
问题:

为什么系统类在Java中声明为“final”?[副本]

佟嘉祯
2023-03-14

根据我的理解,类被声明为final,以防止它被扩展/继承。因此,我认为在这方面可能会有安全性,也可能会有一些性能提升。

但这背后是否有一个非常具体的设计决策?比如说:实现某种设计模式?我确实在这里绕了一个类似的线!但答案并不是我想要的

共有1个答案

商池暝
2023-03-14

单件模式:

-私有构造函数

-只有静态方法

-不需要有多个此类对象或一个对象

-不需要扩展这个基本类

 类似资料:
  • 问题内容: 当我得知该类在Java中被声明为final时,我想知道为什么会这样。那时我没有找到任何答案,但是这篇文章:如何在Java中创建String类的副本?让我想起了我的疑问。 当然,String提供了我所需要的所有功能,而且我从未想过需要扩展String类的任何操作,但是您仍然永远不会知道有人可能需要什么! 那么,有谁知道设计师决定将其定稿时的意图是什么? 问题答案: 将字符串实现为不可变对

  • 根据我的理解 最后一个类只是一个不能扩展的类。 具有私有构造函数的类不能被实例化,除非该类中的表单。这使得从另一个类扩展它毫无用处。但这并不意味着它根本不能被子类化,在内部类中,我们可以扩展并调用私有构造函数。 所以我的理解是,如果我们创建了一个具有单个无参数私有构造函数的类,那么将该类声明为final并没有任何意义。那个么,为什么Java中的系统类声明为最终类,尽管它只有一个无参数的私有构造函数

  • 我正在讨论以下问题:使用Java 8的可选和stream::FlatMap并希望向自定义的添加一个方法,然后检查它是否工作。 更准确地说,我希望向我的添加一个。如果不存在值,则返回一个空流,如果存在,则返回一个包含单个元素的流。 但是,我得出的结论是,声明为final。 为什么会这样呢?有一些类没有声明为final,我个人认为这里没有理由声明final。 作为第二个问题,为什么不是所有的方法都是f

  • 对于伪代码 出现错误的原因是我的CSV文件是分块解析的,即我不是一次传递整个文件内容,而是传递其中的一个块,错误是有意义的,因为不能保证会遇到关闭令牌 例如,字符串可以是。 但是,问题是,这些类被声明为final类,我不能扩展它们。我想明白为什么这些类被声明为final?

  • 问题内容: 有人可以澄清以下代码的重要性吗? 对象A被声明为final,但是我可以更改该对象的实例变量的值,也可以获取更新后的值。那么将对象声明为final的意义何在?我知道将原始数据类型声明为final,这使该变量保持不变。 问题答案: ob将无法引用任何其他对象:final关键字。 不能重新分配。但是您可以更改其内部(如果它是原始的,则是可变的)。所以这有效: 但这不是:

  • 问题内容: 我读到要使一个类在Java中不可变,我们应该执行以下操作: Do not provide any setters Mark all fields as private Make the class final标记为私有 为什么需要步骤3?我为什么要上课呢? 问题答案: 如果你不标记该类,那么我可能会突然使你看似不变的类真正变得可变。例如,考虑以下代码: 现在,假设我执行以下操作: 注意