gpt4 book ai didi

java - 如何在具有许多字段的java中创建一个不可变的类?

转载 作者:行者123 更新时间:2023-11-29 04:08:37 25 4
gpt4 key购买 nike

我有一个面试问题,面试官问我,“你将如何在 java 中创建一个不可变类,哪个类将包含 100 多个字段?”

正如我们所知,要创建不可变类,我们需要将类声明为 final,需要将所有字段声明为 final,并且该类中不应存在任何 setter 方法。我们需要在构造函数中初始化这些字段。

但是当我们有超过10个字段或更多字段时会发生什么?我们不能传递构造函数中的所有字段吗?在这种情况下,我们如何创建不可变类?

最佳答案

这里的字段数是无关紧要的,即使在一个类中有多个字段是糟糕的设计并且是应该重构类的标志。要使类不可变,您需要具备以下条件:

  1. 没有设置方法。这意味着您要么需要一个 Builder 内部类来在调用构造函数之前设置字段的值,要么只是将所有字段作为构造函数参数包含在内(强烈建议不要这样做)。
  2. 将类声明为final。这可以防止类扩展和调用 super
  3. 如果您的不可变类中有非原始字段,您需要复制它们并在每次更改它们时返回副本。

顺便说一句,据我所知,Java 构造函数可以处理 255 parameters .所以对于这次采访,构造函数参数是一个选项。

关于java - 如何在具有许多字段的java中创建一个不可变的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56598456/

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